我有一个由 ISBN 号映射的 Book 模型和 Inventory 模型,但 ISBN 都不是其中的主键。书籍属于书店,库存是一组书店(BookstoreChain)。库存由属于 BookstoreChain 的所有书店共享。
我在书端使用 Hibernate @OneToOne 映射通过加入 ISBN 列来获取库存信息。 Hibernate 以某种方式正确生成了左外连接查询,但 Book 对象上的 inventory 为空。它也不是惰性加载的。忽略 Bookstore 和 Chain,如何在获取书籍时进行 OneToOne 或 ManyToOne 连接并获取库存?
class Book{
@Id
Long id
@Column
String isbn;
@Column
String title;
@OneToOne(optional = true)
@JoinColumn(name = "isbn", referencedColumnName = "isbn",insertable = false, updatable = false)
Inventory inventory;
}
class Inventory{
@Id
Long id
@Column
String chainId
@Column
String isbn
@Column
Long availableQty
}
最佳答案
您必须将您的连接引用命名为其他名称。 isbn 已经是一列了。试试这个:
@OneToOne(optional = true)
@JoinColumn(name = "inventory", referencedColumnName = "isbn",insertable = false, updatable = false)
Inventory inventory;
关于java - ORM:非主键连接列上的 OneToOne 映射 - ISBN 映射的书籍和库存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670741/