2016-09-04 2 views
0

Я изучаю, как хранить и извлекать данные с помощью механизма движка Google и объективировать, и настроить тестовый проект в intellij-idea. я создал простой объект, который выглядит следующим образом:Objectify: Невозможно оценить выражение Метод threw 'com.googlecode.objectify.LoadException' exception

ContactType

@Entity 
public class ContactType { 

@Id 
public Long id; 
public String name; 

    public ContactType(String name){ 
     this.name = name; 
    } 
} 

, прежде чем я начала тестирования я удалить все сохраненные экземпляры я ранее созданные в моем сервлета:

удаление старых данных

Objectify ofy = ObjectifyService.ofy(); 
ObjectifyService.register(ContactType.class); 

List<Key<ContactType>> contactTypes = ofy.load().type(ContactType.class).keys().list(); 
    ofy.delete().keys(contactTypes).now(); 

после этого я сохраняю этот объект следующим образом:

сохранение новых данных

ContactType contactType1 = new ContactType("contactType1"); 
ContactType contactType2 = new ContactType("contactType2"); 
ofy.save().entity(contactType1).now(); 
ofy.save().entity(contactType2).now(); 

тогда я извлечение объектов я просто сохраненные как это:

получения данных

List<ContactType> list= ofy 
       .load() 
       .type(ContactType.class) 
       .list(); 

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

отладки сообщение об ошибке

Unable to evaluate the expression Method threw 'com.googlecode.objectify.LoadException' exception. 

и когда я изменить «вид, как» вариант из «списка» на «toString» в отладчике intellij-idea я получаю только следующую информацию:

enter image description here

поэтому мои вопросы:

  1. как я могу сохранять и извлекать данные с объективизации?
  2. Как я могу увидеть подробную ошибку stacktrace, когда что-то пойдет не так?

ответ

0

Я, наконец, исправил эту проблему. когда я пытаюсь получить размер возвращаемого списка и помещу try/catch вокруг него, тогда я получаю сообщение об ошибке, что у моего объекта нет конструктора по умолчанию без параметров.

try{ 
     List<ContactType> list= ofy 
      .load() 
      .type(ContactType.class) 
      .list(); 
     int size = list.size(); 
    }catch(LoadException e){ 
     String message = e.getMessage(); 
    } 

после добавления следующих construtor все работает отлично:

public ContactType(){ 
    name = ""; 
} 
0

В ответ на часть 2 вашего вопроса, StackTrace брошенной объективизации включает в себя всю информацию, необходимую в обернутой исключения. Независимо от того, что ловит и регистрирует исключение, очевидно, подавляется сообщение об исключении.Это не поведение по умолчанию для среды GAE dev, поэтому я не знаю, что происходит.