Hibernate 外键问题

Hibernate 外键问题,第1张

插入时先插入外键实体,然后用new出来的主键实体的add方法。set属性都会对应有add和del方法的。add之后save就能插入成功了。

你说的多余的属性,只要数据库没有设置成not null就可以不赋值。

hibernate在插入的时候会自动获取外键实体的主键,插入到表的对应字段。

查了一些资料以后,我在映射文件中将外键的not-null属性设置成了false,可是在添加这条Project记录以后查询还是会会出现问题:277 ERROR ProjectDao:116 -可以确定是因为外键为空导致的问题,因为在手动设置外键以后这个问题就解决了这样的话,级联关系都交给hibernate吧,数据库就不要主外键了,麻烦还有设计的时候建议加一个表 project2person,这样看着,用着都舒服,方便扩展我用的就是Hibernate,映射文件是这样的:<class name="UserDao" table="t_user"<id name="id"<generator class="native"/</id<property name="name" column="t_name"/<property name="password" column="t_password"/<set name="projects" inverse="true" cascade="all"<key column="user_id"/<one-to-many class="ProjectDao"/</set</class<class name="ProjectDao" table="t_project"<id name="id"<generator class="native"/</id<!-- 基本信息 --<property name="name" column="t_name"/<property name="code" column="t_code"/不会光用ibernate那个自动生成的hbm吧映射关系可以自己手动去写呀你就用这个就可以了,数据库的外键去掉没有事~意思是直接对数据库 *** 作把外键去掉?我试试……问题补充:xiaofengxp 写道确实你的数据库表结构中的外键字段是否允许为空。在映射文件中的not-null="false"只对持久化对象的关联外键属性做检查,而不会对表结构做检查。或者重新生成Schema,应该可能解决问题我是使用的Hibernate的工具类自动生成的Schema,而且是重新生成的。not-null="false"并不能改变生成Schema的过程,只能手动将数据库中外键设置为delete set null,但是更改后还是不可以啊,还是产生同样的错误啊


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6222539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存