Hibernate 单向一对多 插入数据问题

问题描述

Father对Child是单向一对多,以下是我写的代码Father类:publicclassFather{privateintfid;privateStringcardId;privateStringname;privateSet<Child>childs=newHashSet<Child>();publicFather(StringcardId,Stringname){super();this.cardId=cardId;this.name=name;}publicintgetFid(){returnfid;}publicvoidsetFid(intfid){this.fid=fid;}publicStringgetCardId(){returncardId;}publicvoidsetCardId(StringcardId){this.cardId=cardId;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicSet<Child>getChilds(){returnchilds;}publicvoidsetChilds(Set<Child>childs){this.childs=childs;}}Father.hbm.xml:<hibernate-mapping><classname="lyu.zlx.domain.Father"table="tbl_father_info"><idname="fid"type="integer"><columnname="fid"not-null="true"/><generatorclass="increment"/></id><propertyname="cardId"type="java.lang.String"column="cardid"/><propertyname="name"type="java.lang.String"column="name"/><setname="childs"inverse="true"cascade="all"><keycolumn="fatherid"/><one-to-manyclass="lyu.zlx.domain.Child"/></set></class></hibernate-mapping>Child类:publicclassChild{privateintcid;privateStringcardId;privateStringname;privateintfatherId;publicintgetFatherId(){returnfatherId;}publicvoidsetFatherId(intfatherId){this.fatherId=fatherId;}publicChild(StringcardId,Stringname){super();this.cardId=cardId;this.name=name;}publicintgetCid(){returncid;}publicvoidsetCid(intcid){this.cid=cid;}publicStringgetCardId(){returncardId;}publicvoidsetCardId(StringcardId){this.cardId=cardId;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}Child.hbm.xml<hibernate-mapping><classname="lyu.zlx.domain.Child"table="tbl_child_info"><idname="cid"type="integer"><columnname="cid"not-null="true"/><generatorclass="increment"/></id><propertyname="cardId"type="java.lang.String"column="cardid"/><propertyname="name"type="java.lang.String"column="name"/><propertyname="fatherId"type="java.lang.Integer"column="fatherid"/></class></hibernate-mapping>出现以下错误:Causedby:java.sql.BatchUpdateException:Cannotaddorupdateachildrow:aforeignkeyconstraintfails(`db`.`tbl_child_info`,CONSTRAINT`FK7738ED128EB76D0F`FOREIGNKEY(`fatherid`)REFERENCES`tbl_father_info`(`fid`))一下午了,在网上找了许多答案,还是没有找到准确的解释。有请各位大侠。谢谢!

解决方案

解决方案二:
楼主,单向一对多中外键已经由一的一端维护了,在多的那端就不需要再配fatherid属性了去掉映射文件中的<propertyname="fatherId"type="java.lang.Integer"column="fatherid"/>这行就OK了!

时间: 2024-09-15 19:02:25

Hibernate 单向一对多 插入数据问题的相关文章

关于hibernate 一对多插入数据的问题

问题描述 关于hibernate 一对多插入数据的问题 现在出现了一个问题, 主表和副表通过1对多的关系关联配置,所有的配置都完成了. 在做关联处理时,副表的查询是成功的,但是在对副表进行插入数据的处理时, 数据不能被插入,从打印的日志来看,副表的insert语句都没有被执行, 请问有没有人遇到过这种问题?是什么原因造成的?谢谢 解决方案 Hibernate一对多增删改查 解决方案二: 估计是hibernate配置时cascade的问题,如果是注解的看http://blog.csdn.net/z

关于hibernate单向一对多的一个问题

问题描述 关于hibernate单向一对多的一个问题 一个学生一个班级,班级一对多学生,班级中有一个Set里面存放学生,我执行下面的代码 @Test public void testUpdateStuToNewClass(){ Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); Student stu = session.get(Student.class,

解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()_oracle

今天做项目遇到了一个问题,是以前没注意的.我用的是Spring MVC+ Hibernate JPA + MySQL数据库.在插入数据后SQL执行日志中会多出一条select语句: 复制代码 代码如下: Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id() 表中有个主键是自增列.可是在以往的项目中,没发现有

Hibernate单向一对多应注意的问题

这个 问题困扰我10多天,终于干掉了. 本人使用myeclipse6.5ga,进行hibernate一对多单向关联实例. 一直报如下异常: Hibernate: insert into hbql.score (score, type) values ................... 17:03:32,484 DEBUG JDBCExceptionReporter:69 - could not insert: [score.Score] [insert into hbql.score (sc

hibernate-Hibernate向Mysql数据库插入数据出现乱码问号

问题描述 Hibernate向Mysql数据库插入数据出现乱码问号 在MyEclipse环境下向Mysql数据库插入数据出现乱码问号,于是做了如下设置: MyEclipse字符编码已经设为utf-8(window->preference...设置),MySQL的my.ini下设为default-character-set=utf8,hibernate.cfg.xml下jdbc:mysql://localhost:3306/users?useUnicode=true&characterEnco

spring+hibernate(一对多)向数据库添加数据

问题描述 有两个问题:1.spring和hibernate中的一对多问题(包括添加.删除和更行)~我现在这么写代码规范吗?2.总感觉项目里加了spring之后,处理事务的速度变得慢了很多~比只是加入hibernate的时候慢~这是神马原因呢?数据库有两个表:"user"和"order":一个"user"对应多个"order":user表的外键关联在"order"表中具体的Dao借口都继承了泛型的Dao(泛型

java-SSH JSP页面显示不出Action值来,Hibernate获取值正常,可以插入数据,求大神速回!

问题描述 SSH JSP页面显示不出Action值来,Hibernate获取值正常,可以插入数据,求大神速回! import java.sql.Date;import java.util.List; /** 商品业务*/public class BlurbServiceImpl{BlurbDAO blurbDAO = (BlurbDAO)AppContext.getBean(""blurbDAO""); /* 修改/public void updateBlurb(S

hibernate 如何插入数据到多对多的中间表中

问题描述 hibernate 如何插入数据到多对多的中间表中 hibernate 如何插入数据到多对多的中间表中 关联表已经存在,只是需要在中间表中插入数据 解决方案 全靠自动不用手动,在配置文件里配置好many-to-many的关系 解决方案二: 这种中间表一般都是用手动的..jdbcTemplate来插入的 解决方案三: 使用HibernateCallback,因为该类可以获取到session并且被HibernateCTemplate调用,拿到了session你就应该知道怎么做了. 解决方案

Hibernate打出执行语句,怎么还是没有插入数据呢,也没有异常,这怎么解释呢?

问题描述 public static void main(String[] agrs) {Session session = null;try{session = HibernateSessionFactory.getSession();News news = new News();news.setAddtime(new Date());news.setNewscontent("aaa");news.setTitle("bbb");session.save(news