Playframework 如何播放框架存储列表(针对OneToMany关系)

Playframework 如何播放框架存储列表(针对OneToMany关系),playframework,playframework-1.x,Playframework,Playframework 1.x,对于OneToMany关系,play framework允许主机保留一个从机列表。列表没有固定的大小,可以变得非常大,而存储主数据的数据库行具有预定的大小。那么,怎么玩呢!框架将从属列表存储在包含主节点的行中 Play使用hibernate来持久化,所以这是一个hibernate问题,而不是具体的Play 假设我有一个Author类和一个Book类,其中Author有一个图书列表,那么数据库将有两个表,Author和Book。其中book将包含指向父对象的链接(作者id) 因此,hibernat

对于OneToMany关系,play framework允许主机保留一个从机列表。列表没有固定的大小,可以变得非常大,而存储主数据的数据库行具有预定的大小。那么,怎么玩呢!框架将从属列表存储在包含主节点的行中

Play使用hibernate来持久化,所以这是一个hibernate问题,而不是具体的Play

假设我有一个Author类和一个Book类,其中Author有一个图书列表,那么数据库将有两个表,Author和Book。其中book将包含指向父对象的链接(作者id)


因此,hibernate将该列表存储在一个单独的列表中。如果列表不包含实体,因此无法进行行映射,我相信hibernate会将数据序列化为clob,这样它就可以存储任何大小的数据。

所以当我说author1.books.add(book1)时,它实际上是在进行book1.author=author1?我猜这只是为了方便起见,也就是说,我可以说author1.books.get(0),而不是编写查询Select*from Book Where Author==author1,您可以用普通的java方式访问列表。只有db通过这种方式链接才能重建列表。我可能没有正确地表达/框定问题,我的错!我在问,当我键入author.books.get(0)时,DB是否运行查询Select*from Book,其中author.id==Book.authorId?类似地,当我需要book.author时,它会从author运行Select*,其中author.id==book.authord?也就是说,它用外键链接数据,就像普通的rdbms一样。列表抽象就在那里,这样我就可以作为对象的字段访问这些实体,而不必键入查询。我的理解正确吗?是的,我相信正确。但是,如果您想看到它的详细工作情况,您可以输出SQL以便自己查看……在application.conf中,您可以在取消注释
jpa.debugSQL=true
时打开显示SQL。这将为您提供带有问号的预处理语句查询。此外,Play使用Hibernate,因此您也可以使用Hibernate属性。这些文件可以直接写入application.conf,也可以写入Play应用程序conf文件夹中单独的hibernate.properties文件