hibernate需要注意的问题

一对多,多对多创建实体需要注意的问题

  • 在创建表所对应的实体时,创建放置某一方的集合的时候要手动实例化,如下
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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值