为了账号安全,请及时绑定邮箱和手机立即绑定

hibernate一对多总是报错

为什么我保存就是不行,insert student的时候,总是报外键的错误,可是前面前面明明有insert grade的语句啊?

public static void addStudentsBak(){

        Configuration config=new Configuration().configure();

        SessionFactory sessionFactory = config.buildSessionFactory();

        Session session = sessionFactory.openSession();

        Transaction transaction = session.beginTransaction();

//创建班级对象

Grade g=new Grade("quanyecha","quanyechaban");

//创建学生对象

Student s1=new Student("jiegeng","女","12345678998");

Student s2=new Student("gewei","女","98765432112");

Set sSet=new HashSet<Student>();

//一对多,学生对象添加到班级对象中

sSet.add(s1);

sSet.add(s2);

g.setStudents(sSet);

//g.getStudents().add(s1);

//g.getStudents().add(s2);

//保存班级对象

session.save(g);

//保存学生对象

session.save(s1);

session.save(s2);

transaction.commit();

//关闭session

session.close();

sessionFactory.close();

}


正在回答

4 回答

这里你好像没有注册服务对象

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();

    //创建会话工厂

    sessionFactory = config.buildSessionFactory(serviceRegistry);




0 回复 有任何疑惑可以回复我~
#1

qwerthink 提问者

我用的hibernata5,看的其他学生的代码不用注册,上一节课就是这样的也成功了。这个问题的原因我找到了,老师的student类没有gid这个字段,而我的有,所以插入的时候会报外键的错误。我把这个字段去掉后就行了。
2016-09-08 回复 有任何疑惑可以回复我~

我也是在Student类中添加了gid这个属性,所有一直报错。为什么Student类中不能有gid这个属性呢?数据库中的student表不是有gid这个字段吗?那么对应的javaBean不是应该也要有与之对应的gid这个属性吗?

0 回复 有任何疑惑可以回复我~
#1

qwerthink 提问者

student中可以有gid这个字段,但你要注意int类型默认是0。grade表中gid没有0的所以你是插不进去的,会报外键的错误。手动把gid set成grade表中有的值就可以插入。但我觉得我们用hibernate一对多就是为了不用手动处理,这样没有意义。
2016-10-28 回复 有任何疑惑可以回复我~

// hibernate 5.2.2 加载配置文件过程

StandardServiceRegistry ssr=new StandardServiceRegistryBuilder().configure().build();

// 创建会话工厂

sessionFactory=new MetadataSources( ssr ).buildMetadata().buildSessionFactory();

// 获得会话

session=sessionFactory.getCurrentSession();

// 开启事务

transaction=session.beginTransaction();

0 回复 有任何疑惑可以回复我~
#1

listenpower

对了,如果使用 getCurrentSession(), cfg.xml 配置文件要加上这么一句话 <property name="current_session_context_class">thread</property>
2016-09-18 回复 有任何疑惑可以回复我~

 倒是你为我解疑了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Hibernate初探之一对多映射
  • 参与学习       42157    人
  • 解答问题       310    个

Hibernate中一对多关联映射配置,以及cascade和inverse属性作用

进入课程

hibernate一对多总是报错

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号