Странное поведение при использовании прописных букв (в сочетании с подчеркиванием) для имен столбцов в Hibernate (развернут на JBoss 5.1.0), для MySql DB - PullRequest
0 голосов
/ 17 июля 2011

Я пытаюсь указать имя столбца с помощью аннотации @Column:

@Column(name="ID") //also tried with @Column(name="[ID]") and @Column(name=""\ID"\")
private int id; 

@Column(name="TINY_IMAGE")
private String tinyUrl; 

Но hibernate (или MySQL?) Дает имена 'id' и 'tinyUrl' для вышеупомянутого столбцы соответственно.

Однако, когда я использую код, приведенный ниже, имена столбцов в таблице соединений просто хороши (SHOE_ID и ARTICLE_ID):

@JoinTable(name="SHOE_ARTICLE",
        joinColumns={@JoinColumn(name="SHOE_ID")},
        inverseJoinColumns={@JoinColumn(name="ARTICLE_ID")})

Вот содержимое файла persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

         version="2.0">
   <persistence-unit name="YSPers">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/ySDS</jta-data-source>
      <properties>
         <property name="hibernate.dialect" 
                  value="org.hibernate.dialect.MySQLDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="false" />
         <property name="hibernate.format_sql" value="false"/>
         <!-- property name="hibernate.hbm2ddl.auto" value="create-drop"/-->
      </properties>
   </persistence-unit>
</persistence>       

Как я могу сказать hibernate использовать свойство "name" аннотации @Column для имени столбца?

1 Ответ

2 голосов
/ 18 июля 2011

Похоже, вы могли смешать аннотации для обоих полей и получателей в иерархии классов.

Убедитесь, что вы поместили аннотации на место.Цель (поле или получатель), сканируемая Hibernate, зависит от того, куда вы поместили аннотацию @Id: убедитесь, что вы поместили свои аннотации @Column на одну и ту же цель.Я обычно рекомендую метод получения по разным причинам.

Кстати, способ заключить в кавычки имя столбца с помощью обратных символов @Column (name = "` MY_ID` ")

...