我正在使用 JPA/休眠。我注意到当我持久化一个新对象时,我必须查找引用字段。例如,如果我与 Person 和 Address 是一对一的关系。我希望每个地址只指一个人。而且我知道Person 的主键,我仍然需要对 Person 进行查找以保留地址。
@Transactional
public void saveAddressFor( Long personId, <adddress_details> ) {
Address address = new Address();
address.setOwner( em.getReference( Person.class, personId ) );
address.setAddress( <address_details> );
em.persist( address );
}
我希望因为我知道通过使用#getReference 的Person PKEY,我不必仅仅为了获取它的PKEY 以在插入时进行设置而查找它。但是当我检查 SQL 跟踪时,我发现在事务结束时它实际上会在执行 INSERT 之前查找 Person。
有没有办法避免这种查找?这不是什么大不了的事,只是没有必要,如果可能的话,我想摆脱这些。