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