2014-09-07 4 views
3

xml-файл для отображения новой таблицы из моего db, но когда я запускаю проект, я получаю ошибку сопоставления свойств Duplicate, которую я не могу понять и решить. Вот мой зимуют 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:

<?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> 

и сообщение persisent класс:

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; 
    } 

} 

и вот ошибка

... 
    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 

Редактировать: Я пробовал комментировать <mapping resource="entities/messages.hbm.xml"/> из файла cfg, и я все равно получаю ту же ошибку.

Редактировать 2: Вышеупомянутый проект java EE, я скопировал все в проекте simle java и работал отлично. Любое предложение?

Edit3: я добавил окончательный модификатор сообщений класса, чтобы быть уверенным, что он не может быть унаследован

+1

- это какой-либо суперкласс, также имеющий свойство SenderId для класса Message? или любой MappedSuperClass, который вы используете, потому что этот случай может возникнуть только тогда, когда у любого класса Super есть аналогичный атрибут. – RE350

+0

@kasharma no У меня нет никаких суперклассов в моем проекте, и я уверен, что добавил в класс окончательный модификатор, и проблема все еще существует. – JmRag

+0

У вас есть свойство SenderID в других организациях? Читайте это: https://hibernate.atlassian.net/browse/HHH-5836 –

ответ

1

Пожалуйста, перейдите по следующей ссылке, это может помочь вам ...

Hibernate ORMHHH-2598

Сопоставление коллекции сущностей из двух разных классов с тем же именем коллекции в случае дублирования исключения backref, если ключи сбора не являются нулевыми.

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