2013-10-10 2 views
1

У меня есть эта странная проблема, когда любой вызов указанной структуры данных даст исключение nullPointerException при создании экземпляра в виде стека, но не при создании экземпляра в виде списка.Play framework 2.0 не компилируется при использовании java.utils.Stack

Оба блока испытания и запуска игры веб-сервер дать NullPointerException, когда я запускаю его с классом стека

Это работает:

.... 

/* 
* comment belongs to post, and if post is deleted, 
* the deletion is relayed to all comments that post object 
* owns 
*/ 
@OneToMany (mappedBy="post",cascade=CascadeType.ALL) 
public List<Comment> comments; 

.... 

public Post(SuperUser author,String content,String title){ 
    this.comments = new LinkedList<Comment>(); 
    this.author = author; 
    this.content = content; 
    this.title = title; 
    this.postedAt = new Date(); 

} 

... 

public Post addComment(Comment newComment){ 
    this.comments.add(newComment); 
    this.save(); 
    return this; 
} 

Это не работает:

.... 

/* 
* comment belongs to post, and if post is deleted, 
* the deletion is relayed to all comments that post object 
* owns 
*/ 
@OneToMany (mappedBy="post",cascade=CascadeType.ALL) 
public Stack<Comment> comments; 

.... 

public Post(SuperUser author,String content,String title){ 
    this.comments = new Stack<Comment>(); 
    this.author = author; 
    this.content = content; 
    this.title = title; 
    this.postedAt = new Date(); 

} 

... 

public Post addComment(Comment newComment){ 
this.comments.push(newComment); // ERROR 
    this.save(); 
    return this; 
} 

I попробовал написать интерфейс оболочки для интерфейса List и дал ему метод:

public E push(E elem); 

Но это также не работает.

Любая идея, что это может быть?

+0

В какой строке вы получаете 'NullPointerException'? – jlars62

+0

Любой вызов, который ссылается на объект Stack. В этом случае это добавление к списку в методе addComment (...) –

ответ

1

Вы не можете использовать конкретные классы как тип ассоциаций сущностей. Только интерфейсы: список, набор, карта. ОРМ использует свои собственные конкретные реализации этих интерфейсов для выполнения грязной проверки, отложенной загрузки и т.д.

Соответствующая цитата из спецификации:

Коллекция многозначных постоянные поля и свойства должны быть определены в терминах один следующих интерфейсов коллекции, независимо от того, относится ли класс сущности к соглашениям о методах JavaBeans, отмеченным выше, и используется ли доступ к полям или свойствам: java.util.Collection, java.util.Set, java.util.List, java .util.Map. Тип реализации коллекции может использоваться приложением для инициализации полей или свойств до того, как объект станет постоянным. Как только объект становится управляемым (или отсоединенным), последующий доступ должен быть через тип интерфейса.

+0

Как указано в моем сообщении, я пробовал интерфейс оболочки без успеха. Кроме того, он не работает с интерфейсами Queue или Dequeue. Означает ли это, что я могу использовать только 4 интерфейса? Как я могу построить объект стека, если я не могу расширить интерфейсы? :( –

+0

Да, вы ограничены этими четырьмя интерфейсами. Как бы упорядочить элементы в стеке в любом случае сохранялось в базе данных? –

+0

Не о базе данных. Было бы намного проще манипулировать комментариями в html шаблоны, если они были сохранены в объекте типа стека, так как последний комментарий в, является первым, который я хочу отобразить. По крайней мере сейчас я знаю, в чем проблема. Спасибо! (Так много для рамки с высокой скоростью) –

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