访问中新插入的对象与MyBatis的关联的正确方式



我使用的是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(。

最新更新