a question to use <any> tag<br><br><br> <br> Hibernate version: <br> 3.0 <br> Mapping documents: <br> <br> <?xml version="1.0"?> <br> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
<br>         "<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>"> <br> <hibernate-mapping package="com.crazyasp.testany">
<br>         <class name="TestAnyA" table="TestAnyA" polymorphism="implicit"> <br>                 <id name="id" type="integer" column="id"> <br>                         <generator class="native"/>
<br>                 </id> <br>                 <set name="c" inverse="true"> <br>                         <key> <br>                                 <column name="ownerId"/> <br>                         </key> <br>                         <one-to-many class="com.crazyasp.testany.TestAnyC
"/> <br>                 </set> <br>         </class> <br> </hibernate-mapping> <br> <br> <?xml version="1.0"?> <br> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
<br>         "<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>"> <br> <hibernate-mapping package="com.crazyasp.testany">
<br>         <class name="TestAnyB" table="TestAnyB" polymorphism="implicit"> <br>                 <id name="id" type="integer" column="id"> <br>                         <generator class="native"/>
<br>                 </id>                 <br>                 <set name="c" cascade="delete" inverse="true"> <br>                         <key> <br>                                 <column name="ownerId"/> <br>                         </key> <br>                         <one-to-many class="
com.crazyasp.testany.TestAnyC"/> <br>                 </set> <br>         </class> <br> </hibernate-mapping> <br> <br> <?xml version="1.0"?> <br> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
<br>         "<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>"> <br> <hibernate-mapping package="com.crazyasp.testany">
<br>         <class name="TestAnyC" table="TestAnyC" polymorphism="implicit"> <br>                 <id name="id" type="integer" column="id"> <br>                         <generator class="native"/>
<br>                 </id> <br>                 <any name="owner" meta-type="string" id-type="integer"> <br>                         <meta-value value="a" class="com.crazyasp.testany.TestAnyA"/> <br>                         <meta-value value="b" class="
com.crazyasp.testany.TestAnyB"/> <br>                         <column name="ownerType"/> <br>                         <column name="ownerId" not-null="false"/> <br>                 </any> <br>         </class> <br> </hibernate-mapping>
<br> <br> <br> Code between sessionFactory.openSession() and session.close(): <br> <br> Full stack trace of any exception that occurs: <br> <br> Name and version of the database you are using: <br> postgresql 8.0 <br>
The generated SQL (show_sql=true): <br> Hibernate: select nextval ('hibernate_sequence') <br> Hibernate: insert into TestAnyC (ownerType, ownerId, id) values (?, ?, ?) <br> Debug level Hibernate log excerpt: <br>
<br> 2007-03-23 10:48:53,603 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: null <br> 2007-03-23 10:48:53,605 [main] ERROR org.hibernate.util.JDBCExceptionReporter - 批次处理0insert into TestAnyC (ownerType, ownerId, id) values (a, 1, 3)失败,调用getNextException查看原因。
<br> 2007-03-23 10:48:53,606 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23503 <br>2007-03-23 10:48:53,607 [main] ERROR org.hibernate.util.JDBCExceptionReporter - 错误: 插入或更新表 "testanyc" 违反外键约束 "fkbf7747a9ff594b5e"
<br> Detail: Key (ownerid)=(1) is not present in table "testanyb". <br>2007-03-23 10:48:53,633 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
<br> org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update