java使用id作为引用使用spring数据保存嵌套对象
假设您正在创建一个类型为User
的新实体,用户拥有嵌套对象Billing
,假设您知道存在一个ID为1的Billing
,是否有一种简单的方法可以在新的User
和现有的Billing
之间形成关联
假设获取要设置给用户的Billing
对象是一项昂贵的操作,因此获取整个计费对象并将其设置给用户的解决方案不是一个选项
我的问题是,是否有一种简单的方法可以使用spring数据保存实体与其嵌套副本之间的关系
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int userId;
private String name;
@ManyToOne
@JoinColumn(name = "billing_id")
private Billing userBill;
// constructor
// getters and setters
}
例如,在sudo代码中:
User bob = new User();
bob.billingId.id = 1;
userRepository.save(bob);
# 1 楼答案
当然
JpaRepository.getOne(id)
(与CrudRepository.findById
相反)将在内部调用EntityManager.getReference(entityType, id)
,这是指定用于处理此确切用例的方法(获取对实体的引用,而不加载其关联状态)要回答您的问题,您需要的是:
customer.setBilling(billingRepository.getOne(billingId))