为什么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 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)表
dbo.BASETEMPLATE
(
TEMPLATEID int
templateName varchar(255)
baseTemplateId int
)方言是org.hibernate.dialect.SQLServerDialect吗?奇怪的是,主键总是正确创建的?
发布于 2012-07-17 22:22:54
当你在getter上放置注解时,Hibernate使用属性访问策略,当你将它们放置在字段上时,Hibernate使用字段访问策略。但是,您不应该在同一实体中混合使用这些策略(或者,更准确地说,在相同的继承层次结构中),除非您使用@Access对访问策略进行细粒度控制。
默认情况下,Hibernate希望注释以与@Id相同的方式放置,因此在您的示例中,它希望在getter上放置注释。
发布于 2012-07-18 15:52:36
我不知道为什么字段上的@Column会被hbm2ddl忽略,但我发现如果您注释getter,它就会正确地设置表中的列名。
https://stackoverflow.com/questions/11524276
复制相似问题