2015-03-02 3 views
0

Я пытаюсь получить список по ссылке.Objectify Ref в подклассе

Мои классы как:

  • Лицензия выполнения на Демона,
  • Лицензия может представлять собой LicenseCountryCondition или другой подкласс с Ref (для LicenseCountryCondition, параметр является реф из страны) ,

Лицензия:

@Entity 
@Cache 
@Index 
public class License { 
    @Id 
    Long id; 
    private String name; 
    private String startDate; 
    private String expDate; 
    private int timeStamp; 
    private int status; 
    Ref<Daemon> daemon; 
    private boolean inactive; 
} 

LicenseCountryCondition:

@Index 
@Subclass(index=true) 
public class LicenseCountryCondition extends License{ 
    Ref<Country> country; 
} 

Если я хочу, чтобы найти перечень LicenseCountryCondition, работающий на конкретного Daemon, я это:

Daemon dae=ofy().load().type(Daemon.class).filter("name", "example").first().now(); 

    List<LicenseCountryCondition>test=ofy().load().type(LicenseCountryCondition.class).filter("daemon",dae).list(); 
       for(LicenseCountryCondition i:test){ 
        System.out.println(i.getName()); 
        System.out.println(i.getDaemon().getName()); 
       } 

И у меня хорошие результаты.

Но, когда я пытаюсь получить список LicenseCountryCondition работает на конкретной стране, он не работает:

Country ctr=ofy().load().type(Country.class).filter("name", "France").first().now(); 
    List<LicenseCountryCondition> test=ofy().load().type(LicenseCountryCondition.class).filter("country",ctr).list(); 
     for(LicenseCountryCondition i:test){ 
      System.out.println(i.getName()); 
     } 

Могу ли я получить этот список? (Я видел this, но это не проблема)

Спасибо за внимание.

ответ

0

Убедитесь, что ваш запрос по Франции действительно возвращает реальную страну (не нуль).

Нет ничего явно неправильного в том, что вы написали, но здесь слишком много вещей и слишком много неопределенного состояния базы данных, чтобы кто-то мог ответить на вопрос. Лучшее, что нужно сделать, это собрать тестовый пример, который создает некоторые объекты (поэтому известно состояние db), а затем демонстрирует запросы, которые, по вашему мнению, должны быть успешными, но тем не менее терпят неудачу.

+0

Спасибо за ваш ответ. Я не знаю, почему, но когда я пробовал это утро, это сработало. Я только видел, что два из моих LicenceCountryCondition по-прежнему не были проиндексированы, я думаю, что вчера я работал с ними только вчера. – Pauline

+0

Возможно ли, что вы сохранили значение unindexed, а затем добавили аннотация @Index позже? Аннотации контролируют, будет ли свойство индексироваться при сохранении; если вы добавите аннотацию, вы должны сохранить любые соответствующие объекты. – stickfigure

+0

Да, теперь я понял свою ошибку. Я думал, что из-за супер, мне не нужно было добавлять @index в мой подкласс, но теперь я понимаю, что это было глупо, потому что у меня есть параметры в моих подклассах, что нужно индексировать ... И я ' m, работая над тестовыми данными, поэтому я повторно создаю данные после понимания проблемы. Спасибо за внимание =) – Pauline

Смежные вопросы