查了一些资料以后,我在映射文件中将外键的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,但是更改后还是不可以啊,还是产生同样的错误啊
温馨提示:答案为网友推荐,仅供参考