有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate/JPA,保存一个新实体,同时只在@OneToOne关联上设置id

我有两个实体

  class A { @OneToOne B b; } 

  class B { ... lots of properties and associations ... } 

当我只想创建一个新的id

所以新的A()。setB(新的B()。setId(123))

然后保存并让数据库保存它

我真的不需要或者不想首先从数据库中获取整个B来填充A的实例

我记得这曾经是有效的,但当我测试它时,它不是

我也尝试了所有的级联


共 (2) 个答案

  1. # 1 楼答案

    下面的代码应该有帮助。仅当其被访问时,它才会获取B

    class A { @OneToOne(fetch = FetchType.LAZY) B b; }

  2. # 2 楼答案

    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)