我正在尝试使用@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使用@Column注释的"name"属性作为列名?
看起来您可能在类层次结构中的字段和getter上混合了注释。
确保把你的注释放在适当的地方。Hibernate扫描的目标(字段或getter)取决于您将@Id
注释放在哪里:确保将@Column
注释放在同一个目标上。出于各种原因,我通常推荐使用getter。