假设我有这些类(class):
public class Loan {
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "lender_id")
private User lender;
}
public class User {
@Id
private Long id;
@Column
private String userName;
@OneToMany
private List<Loan> loans;
}
现在,假设我有用户(贷方)ID,并且在 DAO 层中,我想根据贷方的 id
创建一个 Loan
?
我意识到我可以执行以下操作:
User u = userDao.getUserById(1234L);
loanDao.createLoan(u, "someLoan");
但我想知道是否可以在不预加载用户
记录的情况下完成此操作?
最佳答案
没有一个好的方法可以做到这一点,部分原因是它从根本上会导致错误的 ORM 代码。作为程序员,您负责管理实体的内存状态并保持它们正确。如果您创建一个新的贷款并说它属于一个用户,并且一个用户有一个贷款集合,那么您有责任将该贷款添加到该用户! (一旦涉及到缓存,就会产生真正的后果。)
您正在使用 ORM,您需要根据对象而不是数据库来思考。在外键列中添加数字并不重要,设置对象模型的正确内存中表示对您来说才是重要的。数据库是hibernate的问题。
关于java - 插入具有关系的 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9476890/