我有兩個類:Author和Book,定義了兩個JPA註釋之間的關係。我在Play Framework中使用MVC架構。 在控制器類(應用程序)ORM作品中,我有關於作者(idA和nameA)的完整信息,但在視圖中,字段名稱A看起來像空字符串(idA是正確的)。如何在遊戲框架中的視圖中獲得ORM之後的非關係關係的完整信息?
下面我來解釋我的意思:
在作者:
public class Autor extends Model {
@Id
public Long idA;
@Required
public String nameA;
@ManyToMany(mappedBy = "authors")
public Set<Book> books;
}
和書籍:
public class Book extends Model {
@Id
public Long idB
@ManyToMany
@JoinTable(
name = "creates",
joinColumns = @JoinColumn(name = "id_b", referencedColumnName = "id_b"),
inverseJoinColumns = @JoinColumn(name = "id_a", referencedColumnName = "id_a")
)
public Set<Autor> authors;
}
public static Finder<Long, Book> find = new Finder<Long, Book>(Long.class, Book.class);
public static List<Book> all()
{
return find.all();
}
我嘗試了所有的作者爲GET的效果得到書請求。 我已經添加到路由文件行:
GET /books/ controllers.Application.booksShow()
開創了應用類梅索德:
public static Result booksShow(Long)
{
return ok(views.html.booksInfo.render(Book.all()));
}
片段中的觀點在斯卡拉看起來是這樣的:
@for(book <- Books) {
<li>
@book.title
@book.authors.size()
@for(author <- book.authors) {
<li>@author.nameA</li>
}
</li>
}
GET請求後在瀏覽器中我得到這樣的東西:
Title1 2
[empty line]
[empty line]
Title2 1
[empty line]
,但它應該是:
Title1 2
Author1
Author2
Title2 1
Author2
我試圖改變booksShow方法:
public static Result booksShow(Long id)
{
List<Books> b = Books.all();
System.out.println(b.get(0).title);
System.out.println(b.get(0).authors.iterator().next().nameA);
return ok(views.html.booksInfo.render(Ksiazka.all()));
}
,在我的控制檯出現:
Title1
Author1
但在網站上,作者仍然空;
當我在斯卡拉改變:
@for(author <- book.authors) {
<li>@author.nameA</li>
}
爲:
@for(author <- book.authors) {
<li>@author.idA</li>
}
我改正(非零,非空)的ID。
有什麼想法?我很困惑,我收到了idA和Authors集合的大小,但nameA是空白的。
你不必與作者日期/作者的問題? –
Oryginally所有變量/類名稱都是波蘭語(或多或少,實際上,英文和波蘭語的名字是和平共存的),我已經在發佈我的問題之前改變了它們以澄清(對於其他用戶)。作爲編輯器,我使用了TextArea,可能我錯過了它。 –