Java Hibernate不按主键加载关联实体

Java Hibernate不按主键加载关联实体,java,oracle,hibernate,jpa,Java,Oracle,Hibernate,Jpa,我有两张表(为了回答这个问题,我把它们简化了): 书{ id整数, 名称字符串, 作者id整数 } 作者{ id整数, 全名字符串 } 现在我需要保存书,但我没有作者id,我只有作者的全名 我可以按姓名获取作者,然后执行book.set(thatAuthor),但我在许多类中有更多的字段,我必须填充所有这些对象,而且代码比我希望的要多,特别是因为我使用map struct映射所有内容,然后我只想调用persist并完成它,但我不能,我必须手动设置这些字段 问题:有没有可能让Hibernate这

我有两张表(为了回答这个问题,我把它们简化了):

书{
id整数,
名称字符串,
作者id整数
}
作者{
id整数,
全名字符串
}
现在我需要保存
,但我没有
作者id
,我只有作者的
全名

我可以按姓名获取作者,然后执行
book.set(thatAuthor)
,但我在许多类中有更多的字段,我必须填充所有这些对象,而且代码比我希望的要多,特别是因为我使用map struct映射所有内容,然后我只想调用persist并完成它,但我不能,我必须手动设置这些字段

问题:有没有可能让Hibernate这样做?我用数据填充实体类(设置了作者的
fullName
),它是唯一的,因此如果Hibernate尝试这样做,他只会发现一个结果,没有问题

我想到了这样的功能:Hibernate查看类。它看到一些字段已设置,而另一些字段未设置。它获取所有设置的字段,并将它们全部放入
where子句
(在我的例子中,它只是authors
fullName
)中,并尝试查找单个结果,否则抛出异常


不知道你是否能理解我,我已经尽力了。不要因为这个问题而恨我,我所能找到的只是做我所做的,手动加载对象。如果我可以通过问这个问题来避免大量的代码,为什么不试试呢?

不,Hibernate不会帮你的。只需执行查询即可获得作者的全名。类的设计不正确。其中有一个非常基本的问题:唯一的作者姓名,这不是人为的问题(我是经典,纸质图书馆的客户)。我对伪代码没有(大)问题,但您可能会看到,它并不严格。真正的实体类有或没有唯一的规范将是好的。重新“避免大量的代码”。。。使用具有良好模式的工具?关系数据库已经有50年的历史了,正确的设计书籍的作者迪勒马从半个世纪以来就已经出名了。顺便说一句,我可以用正确定义的类给出答案,但“好传统”在SO中是“不在主题中”不,Hibernate不会为您这样做。只需执行查询即可获得作者的全名。类的设计不正确。其中有一个非常基本的问题:唯一的作者姓名,这不是人为的问题(我是经典,纸质图书馆的客户)。我对伪代码没有(大)问题,但您可能会看到,它并不严格。真正的实体类有或没有唯一的规范将是好的。重新“避免大量的代码”。。。使用具有良好模式的工具?关系数据库已经有50年的历史了,正确的设计书籍的作者迪勒马从半个世纪以来就已经出名了。顺便说一句,我可以用正确定义的类给出答案,但“好传统”中的“不在主题中”也是如此