说我有这些课程:
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层,我想根据贷方的Loan
创建一个id
?
我意识到我可以做到以下几点:
User u = userDao.getUserById(1234L);
loanDao.createLoan(u, "someLoan");
但我想知道是否可以在不加载User
记录的情况下进行此操作?
答案 0 :(得分:2)
没有一种好的方法可以做到这一点,部分原因是它会从根本上导致错误的ORM代码。程序员负责管理实体的内存状态并保持其正确。如果您创建新贷款并说它属于用户,并且用户有贷款集合,则您有责任将该贷款添加到用户! (一旦缓存涉及,这会产生实际后果。)
您正在使用ORM,您需要考虑对象而不是数据库。在外键列中添加数字并不重要,设置对象的正确内存表示模型对您来说非常重要。数据库是hibernate的问题。