我有两个实体:MyClassA和MyClassB。第二个是大而且俗气。
@Entity
@Table(name = tableA)
public class MyClassA {
@Id
private Long id;
@OneToOne
@JoinColumn(name = "id_b")
private MyClassB connetctedB;
... //some other values
}
我想创建和存储abouve类的新实体。在我的服务类中,我传递了一些MyClassB实体的值和id。我看到的常用解决方案是:
public void createNewA(long idB, String name) {
MyClassA a = new MyClassA();
a.setName(name);
MyClassB b = getBByid(idB); // <- I want to avoid this
a.setConnetctedB(b);
entityManager.persist(a);
}
问题在于MyClassB是havy并且操作getBByid消耗了大量资源。在这种情况下,如何创建和存储MyClassA的新对象?我已经是MyClassB的id,所以它应该很容易,但我必须使用本机查询,不幸的是hibernate不支持本机插入。