hbm2ddl忽略@Column注释?

Chr*_*urn 4 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 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; }       
...
}
Run Code Online (Sandbox Code Playgroud)

和hbm2dll生成此(sqlserver)表

dbo.BASETEMPLATE 
(
TEMPLATEID      int
templateName    varchar(255)
baseTemplateId  int
)
Run Code Online (Sandbox Code Playgroud)

dialect是org.hibernate.dialect.SQLServerDialect奇怪的是,主键始终是正确创建的?

axt*_*avt 5

当您在getter上放置注释时,Hibernate使用属性访问策略,当您将它们放在字段上时,Hibernate使用字段访问策略.但是,除非您使用@Access对访问策略的细粒度控制,否则不应将这些策略混合在同一实体中(或者更确切地说,在同一继承层次结构中).

默认情况下,Hibernate期望注释的放置方式与之相同@Id,因此在您的情况下,它需要在getter上进行注释.