Hibernate hbm2ddl是否忽略@Column注释?
为什么hbm2ddl会忽略@Column注释 这是我的班级:-Hibernate hbm2ddl是否忽略@Column注释?,hibernate,hbm2ddl,Hibernate,Hbm2ddl,为什么hbm2ddl会忽略@Column注释 这是我的班级:- import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "BASETEMPLATE") public clas
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "BASETEMPLATE")
public class BaseTemplate implements IBaseTemplate
{
private Integer id;
@Column(name="TEMPLATENAME")
private String templateName;
@Column(name="BASETEMPLATEID")
private Integer baseTemplateId;
@Id
@GeneratedValue
@Column(name = "TEMPLATEID")
@Override
/** {@inheritDoc} */
public Integer getId() { return id; }
...
}
hbm2dll生成这个(sqlserver)表
方言是org.hibernate.dialogue.sqlserverdialogue
奇怪的是,主键总是正确创建的?在getter上放置注释时,Hibernate使用属性访问策略,在字段上放置注释时,Hibernate使用字段访问策略。但是,您不应该将这些策略混合在同一个实体中(或者更准确地说,在同一继承层次结构中),除非您使用细粒度的访问控制策略
默认情况下,Hibernate希望注释的放置方式与
@Id
相同,因此,在您的情况下,它需要在getter上进行注释。我不知道为什么hbm2ddl会忽略字段上的@Column,但我发现如果您对getter进行注释,它会正确设置表中的列名。您希望生成什么表结构?我看到3个@Column
注释(带名称)和3个具有相同名称的DB table列。对我来说,这似乎是可行的。我希望大小写匹配(我正在移植到一个区分大小写的数据库),但是即使列名完全不同,这也行。对不起,我甚至没有注意到大小写的差异,糟糕。
dbo.BASETEMPLATE
(
TEMPLATEID int
templateName varchar(255)
baseTemplateId int
)