Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate hbm2ddl是否忽略@Column注释?_Hibernate_Hbm2ddl - Fatal编程技术网

Hibernate 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

为什么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)表

方言是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
)