一对多,多对多创建实体需要注意的问题
- 在创建表所对应的实体时,创建放置某一方的集合的时候要手动实例化,如下
private Set<LinkMan> linkMans=new HashSet<>();
否则会报空指针异常
多对多创建XML需要注意的问题
多对多建立双向的关系时,必须有一方放弃外键维护
public void test(){
Session session= HibernateUtils.getCurrentSession();
Transaction tx=session.beginTransaction();
User user1=new User();
user1.setUser_name("lisi");
Role role1=new Role();
role1.setRole_name("wangwu");
Role role2=new Role();
role2.setRole_name("zhangsan");
//建立关系
user1.getRoles().add(role1);
user1.getRoles().add(role2);
role1.getUsers().add(user1);
role2.getUsers().add(user1);
//保存操作:多对多建立了双向的关系必须有一方放弃外键维护.
//一般是被动方放弃外键维护权
session.save(user1);
session.save(role1);
session.save(role2);
tx.commit();
}
否则会报错,如下
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
Duplicate entry '1-1' for key 'PRIMARY'