我使用的是MyBatis 3.4.6。
假设我有一个关联的POJO,即
个人
- 人物ID
- 公司ID
- PersonName
- 公司(关联到
Company
类(
公司
- 公司ID
- 公司名称
假设我已经有一个满是Company
记录的数据库,但我想向ID为1的Company
添加一个新的Person
,然后检索我的关联。
Person p = new Person();
p.setPersonName("Ryan");
p.setCompanyID(1);
personMapper.insert(p);
Company c = p.getCompany() // I'd like to retrieve the association here
我知道我可以重新查询我的个人,关联就会加载,但这是完成这些事情的标准/可接受的方式吗?
即
Person p = new Person();
p.setPersonName("Ryan");
p.setCompanyID(1);
personMapper.insert(p);
// In the below code, the "PersonID" **did** refresh from the DB after insert
// so I have access to it, but my associations do not initialize after insert,
/// so I have to re-query the DB to get a new Person object with my Company association
p = personMappper.get(p.getPersonID());
Company c = p.getCompany() // This will return as expected
我想说,您可能希望删除Person#companyID
字段,只使用Person#company
来管理它。当你添加一个新人时,你需要知道他们是哪家公司的一部分?
Person p = new Person();
p.setPersonName("ryan");
p.setCompany(companyMapper.get(1));
personMapper.insert(p);
现在你有了你的Person
和一个完整的Company
。不管怎样,你都需要进行第二次查询(所以要回答你的问题,是的,这是正确的,你需要第二次询问(,但通过这种方式,你可以对公司进行验证(即永远不要分配不存在的公司ID(。