2012-01-23 3 views
1

У меня есть следующий * .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" таблицы имеют внешние ключи, ограничивающие (с собой). Как я могу написать свойства «один ко многим»? Я новичок в спящем режиме, и онлайн-учебники не были слишком описательными.

Когда я запустить приложение, как это, я получаю следующие ошибки:

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

Вы уверены, что хотите иметь свойство «testTitle» в Testresult вместо ссылки на testcase в testresult? – Firo

ответ

0

Hibernate позволяет вам определять отношения, они не могут обеспечить ограничение. Как вы могли заметить, это инструмент сопоставления для сопоставления объектов Java с вашими таблицами базы данных. Он не предназначен для определения модели данных.

-JavaJigsaw.com

+0

Я знаю это, но почему я получаю эту ошибку? В нем говорится, что это связано с ограничениями, поэтому я думаю, что я не даю ему знать, что существует ограничение. – Nacht

0

Один-ко-многим может быть представлена ​​как многие к одному из TestCase

< имя класса = "TestCase" таблица = "TestCase" > < полидоменной to-one name = "testcaseID" class = "TestResult" column = "testcaseid"/>

Смежные вопросы