How do I fix the "Duplicate Properties" exception?

xml file to map the new table from my db, but when I run the project, I get a Duplicate property mapping error that I cannot understand and resolve. Here is my hibernate cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="session1">
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password"/>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/realestate</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
  <property name="hibernate.connection.CharSet">utf8</property>
  <property name="hibernate.connection.characterEncoding">utf8</property>
  <property name="hibernate.connection.useUnicode">true</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.current_session_context_class">thread</property>
  <property name="hibernate.c3p0.min_size">5</property>
  <property name="hibernate.c3p0.max_size">20</property>
  <property name="hibernate.c3p0.timeout">300</property>
  <property name="hibernate.c3p0.max_statements">50</property>
  <property name="hibernate.c3p0.idle_test_period">3000</property>
  <property name="hibernate.connection.CharSet">utf8</property>
  <property name="hibernate.connection.characterEncoding">utf8</property>
  <property name="hibernate.connection.useUnicode">true</property>
  <mapping resource="entities/users.hbm.xml"/>
  <mapping resource="entities/adminstration.hbm.xml"/>
  <mapping resource="entities/seller.hbm.xml"/>
  <mapping resource="entities/buyer.hbm.xml"/>
  <mapping resource="entities/renter.hbm.xml"/>
  <mapping resource="entities/leeser.hbm.xml"/>
  <mapping resource="entities/house.hbm.xml"/>
  <mapping resource="entities/userSellsHouse.hbm.xml"/>
  <mapping resource="entities/userRentsHouse.hbm.xml"/> 
    <mapping resource="entities/messages.hbm.xml"/> 


 </session-factory>
</hibernate-configuration>

      

Messages.hbm.xml file:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="entities.Message" table="MESSAGES" schema="realestate">
        <id name="messageID" type="int">
            <column name="messsageID" />

        </id>
        <property name="Date" type="java.lang.String">
            <column name="Date" />
        </property>
        <property name="SenderID" type="java.lang.Integer">
            <column name="Sender"  />
        </property>
        <property name="ReceiverID" type="java.lang.Integer">
            <column name="Receiver"  />
        </property>
        <property name="Message" type="java.lang.String">
            <column name="Message"  />
        </property>
        <property name="Theme" type="java.lang.String">
            <column name="Theme"  />
        </property>

    </class>
</hibernate-mapping>

      

and the Persistent class for messages:

public class Message {
    int MessageID;
    int SenderID;
    int ReceiverID;
    String date;
    String message;
    String theme;


    public int getMessageID() {
        return MessageID;
    }
    public void setMessageID(int messageID) {
        MessageID = messageID;
    }
    public int getSenderID() {
        return SenderID;
    }
    public void setSenderID(int senderID) {
        SenderID = senderID;
    }
    public int getReceiverID() {
        return ReceiverID;
    }
    public void setReceiverID(int receiverID) {
        ReceiverID = receiverID;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getTheme() {
        return theme;
    }
    public void setTheme(String theme) {
        this.theme = theme;
    }

}

      

and here's the error

...
    Caused by: org.hibernate.MappingException: Duplicate property mapping of SenderID found in entities.Messages
        at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:515)
        at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:505)
        at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
        at org.hibernate.cfg.Configuration.validate(Configuration.java:1358)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
        at database.HibernateUtil.<clinit>(HibernateUtil.java:15)
        ... 46 more

      

Edit: I tried commenting <mapping resource="entities/messages.hbm.xml"/>

out from the cfg file and I still get the same error.

Edit2: Above java EE project, I copied everything in simle java project and it worked fine. Any suggestion?

Edit3: I added a final modifier to the message class to make sure it cannot be inherited

+3


source to share


1 answer


Please go to the following link, it might help you ...



Hibernate ORMHHH-2598

Displaying a collection of objects from two different classes with the same collection name results in a duplicate backref exception unless the collection keys are null.

+1


source







All Articles