我正在與Hibernate一個小項目,我來,我無法找到一個解決一個問題:兒童不被存儲
我有一個表調用Solicitud(「父親」),這是由另一個表DetalleSolicitud(孩子)的幾個記錄組成的,你可以回想起以前的「模型」,比如賬單及其銷售細節。
那麼當我試圖拯救「父親」時,hibernate並沒有拯救它的兒子。
看到由Hibernate生成的SQL語句,我注意到,該鏈接的孩子與它的塔父親沒有被存儲:
Hibernate: insert into SOLICITUD (ESTADO, TIPOSOLICITUD, IDUSUARIO, IDSOLICITUD) values (?, ?, ?, ?)
Hibernate: insert into DETALLESOLICITUD (IDLAB, IDDIA, IDBLOQUE, IDDETALLE) values (?, ?, ?, ?)
WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1400, SQLState: 23000
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-01400: cannot insert NULL into ("TOO"."DETALLESOLICITUD"."IDSOLICITUD")
,你可以看到IDSOLICITUD列不是一部分用於向DETALLESOLICITUD添加新記錄的sql語句是鏈接父親和兒子的列。我不知道爲什麼會這樣,因爲我認爲我的映射文件是錯誤的,但他們似乎是確定:
solicitud.hbm.xml
<class name="Solicitud" table="SOLICITUD">
<id name="id" column="IDSOLICITUD">
<generator class="sequence">
<param name="sequence">SOLICITUD_SEQ</param>
</generator>
</id>
<property name="estado" column="ESTADO"/>
<property name="tipo" column="TIPOSOLICITUD"/>
<many-to-one name="usuario_solicitante" class="Usuario">
<column name="IDUSUARIO" not-null="true"></column>
</many-to-one>
<set name="detallesSolicitud" cascade="save-update" table="DETALLESOLICITUD">
<key>
<column name="IDSOLICITUD" not-null="true"/>
</key>
<one-to-many class="DetalleSolicitud" />
</set>
... Lots of other attributes...
detallesolicitud.hbm.xml
<class name="DetalleSolicitud" table="DETALLESOLICITUD">
<id name="id" column="IDDETALLE">
<generator class="sequence">
<param name="sequence">DETALLESOLICITUD_SEQ</param>
</generator>
</id>
... Lots of other attributes ...
</class>
所以,如果有人能幫助我,我真的很感激它
嘗試刪除非空=從「真」 <列名稱=「IDSOLICITUD」not-null =「true」/> – StanislavL