gpt4 book ai didi

java - 使用仅具有 id 值的实体保存外键

转载 作者:行者123 更新时间:2023-11-29 18:26:59 24 4
gpt4 key购买 nike

如果我有两个 hibernate 实体,例如:

@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 更新公司?

最佳答案

是的,你可以做到。

Does it save just the reference, or also update the company with name=null?

使用默认的cascade,像这样,Hibernate 将不执行任何操作。所以答案是:它只保存一个外键。

最有效的方法(对于 JPA 也是如此)是使用 session.load(Company.class, 1)。它返回一个代理而不向数据库发出任何请求。但是,当然,您需要为此举行一次 session 。

关于java - 使用仅具有 id 值的实体保存外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46099355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com