Hibernate / JPA,保存新实体,同时仅在@OneToOne关联上设置id
我有两个实体,
class A { @OneToOne B b; } class B { ... lots of properties and associations ... }
当我创建新的A()然后保存时,我只想设置b的id。
所以新的A()。setB(new B()。setId(123)) 。
然后保存并让数据库保留它。
我真的不需要或者想要首先从数据库中获取整个B,以填充A的实例。
我记得这曾经工作过,但是当我测试的时候却没有。
我也尝试过Cascade All 。
B b = (B) hibernateSession.byId(B.class).getReference(b.getId()); a.setB(b); hibernateSession.load(...) // can also be used as it does the same.
JPA等价物是:
entitymanager.getReference(B.class, id)
下面的代码应该有帮助。它只在访问时才会获取B.
class A { @OneToOne(fetch = FetchType.LAZY) B b; }
我没有足够的声誉来评论所以我发帖作为答案。
尝试在OneToOne关系中添加optional = false
@OneToOne(optional=false, fetch=FetchType.LAZY)
我认为这对解决你的问题很有用: Hibernate:一对一的延迟加载,可选= false