我有以下* .hbm.xml文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.models.results">
<class name="TestResult" table="testcaseresults">
<id name="testCaseResultsId" type="java.lang.Integer" column="testcaseresultsid">
<generator class="native"/>
</id>
<property name="start" type="java.sql.Timestamp" column="starttime"/>
<property name="end" type="java.sql.Timestamp" column="endtime"/>
<property name="results" type="java.lang.String" column="results"/>
<property name="passed" type="java.lang.Integer" column="passed"/>
<join table="testcase">
<key column="testcaseid"/>
<property name="testTitle" column="testcasename"/>
<property name="tfsid" column="tfsid"/>
</join>
<join table="selwowusers">
<key column="userid"/>
<property name="tester" column="useremail" type="java.lang.String"/>
</join>
</class>
现在,我的问题是“testcase”和“selwowusers”表有外键约束(自己)。我究竟如何编写一对多属性?我是hibernate的新手,在线教程也没有过于描述性。
当我按原样运行应用程序时,我收到以下错误:
ERROR: HHH000388: Unsuccessful: alter table testcase add index FKBBAC26C2C073639B (testcaseid), add constraint FKBBAC26C2C073639B foreign key (testcaseid) references testcaseresults (testcaseresultsid)
Jan 23, 2012 4:08:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Cannot add or update a child row: a foreign key constraint fails (`newseleniumwowmatrix`.`#sql-6379_4868`, CONSTRAINT `FKBBAC26C2C073639B` FOREIGN KEY (`testcaseid`) REFERENCES `testcaseresults` (`testcaseresultsid`))
Jan 23, 2012 4:08:57 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
感谢。
答案 0 :(得分:0)
Hibernate允许您定义关系,它不能强制执行约束。正如您可能观察到的,它是一个映射工具,用于将java对象与数据库表映射。它不适用于定义数据模型。
-JavaJigsaw.com
答案 1 :(得分:0)
一对多可以表示为来自TestCase的多对一
&lt; class name =“Testcase”table =“testcase”&gt; &lt; many-to-one name =“testcaseID”class =“TestResult”column =“testcaseid”/&gt;