Note that there are some explanatory texts on larger screens.

plurals
  1. POMapping List<CustomClass> in hibernate - ClassCastException
    primarykey
    data
    text
    <p>I am having difficulties mapping a list in hibernate. I would like to know what you think of my classes, mapping and database scheme. If everything is right, I would appreciate some help on the thrown exception. Thanks in advance !</p> <p>I have the following classes : </p> <pre><code>public class AuditEntry { private long id; private String typeLigne; private String famille; private String user; private String libelle ; private String processName; private String caseId; private Date dateCreation = null; private List&lt;AuditEntryStringMap&gt; libelles; /* Getters and setters generated automatically... */ } public class AuditEntryStringMap { private long id ; private String key ; private String value ; public AuditEntryStringMap(String key, String value) { this.key = key ; this.value = value ; } /* Getters and setters generated automatically... */ } </code></pre> <p>My hbm files are the following : </p> <pre><code>&lt;class name="AuditEntryStringMap" table="AUDIT_I18N"&gt; &lt;cache usage="read-write" include="all" /&gt; &lt;id name="id" type="long"&gt; &lt;column name="AUDIT_I18N_ID"&gt;&lt;/column&gt; &lt;generator class="sequence" &gt; &lt;param name="sequence"&gt;AUDIT_I18N_SEQ&lt;/param&gt; &lt;/generator&gt; &lt;/id&gt; &lt;property name="key" column="KEY_" /&gt; &lt;property name="value" column="VALUE_"/&gt; &lt;/class&gt; &lt;class name="AuditEntry" table="AUDIT"&gt; &lt;cache usage="read-write" include="all" /&gt; &lt;id name="id" type="long"&gt; &lt;column name="AUDIT_ID"&gt;&lt;/column&gt; &lt;generator class="sequence" &gt; &lt;param name="sequence"&gt;AUDIT_SEQ&lt;/param&gt; &lt;/generator&gt; &lt;/id&gt; &lt;property name="typeLigne" column="TYPELIGNE" /&gt; &lt;property name="libelle" column="LIBELLE" /&gt; &lt;property name="user" column="USERNAME" /&gt; &lt;property name="processName" column="PROCESSNAME" /&gt; &lt;property name="caseId" column="CASE_ID" /&gt; &lt;property name="dateCreation" insert="false" update="false"&gt; &lt;column name="DCRE" sql-type="date" default="sysdate"&gt;&lt;/column&gt; &lt;/property&gt; &lt;list name="libelles" table="AUDIT_I18N"&gt; &lt;key&gt; &lt;column name="FK_AUDIT_ID" sql-type="number(19,0)" /&gt; &lt;/key&gt; &lt;index type="string" column="KEY_" /&gt; &lt;element type="string" column="VALUE_" /&gt; &lt;/list&gt; &lt;/class&gt; </code></pre> <p>Finally, my sql script is the following : </p> <pre><code>create sequence AUDIT_SEQ; create sequence AUDIT_I18N_SEQ; create table AUDIT ( AUDIT_ID number(19,0) not null, TYPELIGNE varchar2(255 char), LIBELLE varchar2(255 char), USERNAME varchar2(255 char), CASE_ID varchar2(255 char), PROCESSNAME varchar2(255 char), DCRE date default sysdate, primary key (AUDIT_ID)); create table AUDIT_I18N ( AUDIT_I18N_ID number(19,0) not null, KEY_ varchar2(255 char), VALUE_ varchar2(255 char), FK_AUDIT_ID number(19, 0), primary key (AUDIT_I18N_ID)) ALTER TABLE AUDIT_I18N add constraint FK_AUDIT_I18N foreign key (FK_AUDIT_ID) references AUDIT; </code></pre> <p>Hibernate generates the following queries before casting an exception on commit : </p> <pre><code>Hibernate: select AUDIT_SEQ.nextval from dual Hibernate: insert into AUDIT (TYPELIGNE, LIBELLE, USERNAME, PROCESSNAME, CASE_ID, AUDIT_ID) values (?, ?, ?, ?, ?, ?) Hibernate: insert into AUDIT_I18N (FK_AUDIT_ID, KEY_, VALUE_) values (?, ?, ?) </code></pre> <p>The exception : </p> <pre><code>com.bpm.domain.AuditEntryStringMap cannot be cast to java.lang.String </code></pre> <p>Which occurs when GenericDaoHibernate.save(T entity) is called.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload