首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hbm2ddl会忽略@Column注释吗?

hbm2ddl会忽略@Column注释吗?
EN

Stack Overflow用户
提问于 2012-07-17 22:07:25
回答 2查看 1.1K关注 0票数 4

为什么hbm2ddl会忽略@Column注释?

这是我的班级:

代码语言:javascript
复制
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)表

代码语言:javascript
复制
dbo.BASETEMPLATE 
(
TEMPLATEID      int
templateName    varchar(255)
baseTemplateId  int
)

方言是org.hibernate.dialect.SQLServerDialect吗?奇怪的是,主键总是正确创建的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 22:22:54

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

默认情况下,Hibernate希望注释以与@Id相同的方式放置,因此在您的示例中,它希望在getter上放置注释。

票数 5
EN

Stack Overflow用户

发布于 2012-07-18 15:52:36

我不知道为什么字段上的@Column会被hbm2ddl忽略,但我发现如果您注释getter,它就会正确地设置表中的列名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11524276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档