使用仅具有val值的实体保存外键

时间:2016-02-18 12:52:56

标签: java hibernate jpa

如果我有两个休眠实体,如:

@Entity
class Company {
     @Id
     Integer id;
     String name;
}

@Entity
class Person {
     Integer id;
     String name;
     @ManyToOne
     Company company;
}

我已经存储了像Company(id:1, name:"Acme")

这样的公司

我是否可以创建一个仅使用其ID引用公司的人,而不是加载整个记录,例如:

Session session = SessionFactory.openSession();
Company acme = new Company();
acme.setId(1);
Person person = new Person();
person.setName("Manuel");
person.setCompany(acme);

session.save(person);

是仅保存引用,还是使用name=null更新公司?

1 个答案:

答案 0 :(得分:1)

是的,你可以做到。

  

它是仅保存引用,还是更新公司   命名=空?

默认情况下cascade就像那样,Hibernate什么都不做。所以答案是:它只保存一个外键。

最有效(对于JPA也是)方法是使用session.load(Company.class, 1)。它返回一个代理而不对数据库做任何请求。但是,当然,你需要有一个会话。