@Test
public void testSave()
{
Boss boss = new Boss();
boss.setName("A-老板"); Company company = new Company();
company.setName("A-公司"); boss.setCompany(company);
company.setBoss(boss); // //这两行代码会保存两次没有外键端的对象,基于主键映射。所以在保存时,要么先保存没有外键的一端,要么只保存有外键的一端。
oneToOnePrimaryService.saveBoss(boss);
// oneToOnePrimaryService.saveCompany(company); } @Test
public void testGet()
{
//有外键的一端默认使用懒加载。
// Boss boss = oneToOnePrimaryService.getBoss(1);
// System.out.println(boss.getCompany().getClass().getName());
// //没有外键的一端不使用懒加载,而是直接将它引用的对象使用左外连接一并查询出来。
Company company = oneToOnePrimaryService.getCompany(1);
System.out.println(company.getBoss().getClass().getName());
} @Test
public void testUpdate()
{ //没有外键列不仅有外键约束还有唯一约束,即没有外键列一端的对象不能被有外键列一端的两个对象同时指向。这样才能够实现一对一。
Company company = oneToOnePrimaryService.getCompany(2); Boss boss = oneToOnePrimaryService.getBoss(1);
boss.setCompany(company); //没有抛异常,但是没有更新成功
oneToOnePrimaryService.updateBoss(boss);
} @Test
public void testDelete()
{
//基于主键映射的方式支持级联保存,但不支持级联删除。 //再删除时不能先删除没有外键的一端,因为它的主键被引用。
Boss boss = oneToOnePrimaryService.getBoss(4);
Company company = oneToOnePrimaryService.getCompany(4); // oneToOnePrimaryService.deleteCompany(company);
oneToOnePrimaryService.deleteBoss(boss); }
04-18 20:37
查看更多