如何使用 JPA 2 和 HBN maven 插件创建休眠友好的 MySQL 数据库字段



有什么方法可以使用JPA或休眠注释来指定字段应该在数据库中的确切类型和长度(根据MySQL)?

例如:

@Entity
@Table { appliesTo="test" }
public class Test implements Serializable {
    private string info;
    public void setInfo(String i) {
       info = i;
    }
    @Column { name="id", length="25" }
    public String getInfo() {
        return info;
    }
}
我想

使用休眠-maven-plugin对这个类进行逆向工程,我想在@Column注释中添加"varchar 35"或其他东西,以便在我进行逆向工程时,字段是按照我指定的和我指定的长度创建的。

另外,在java字段上使用"列"注释(例如私有长时代)与getter方法(我通常看到它的地方)有什么区别?

是的,有。属性列列定义在列注释中就是为了满足这样的需求。如果不需要对生成的 SQL DDL 进行这种详细控制,则长度、精度和小数位数属性可能很有用。

不应将持久性批注同时传播到字段和方法。只要它们始终如一地放置,就会没问题。提供的持久性(如 Hibernate)选择它是否使用字段或方法根据注释所在的位置来保留值。如果两者兼而有之,则结果未定义且不太可能起作用。

这是一个例子

@Column(name = "delFlag", nullable = false, columnDefinition = "boolean default false")
private boolean delFlag;   
@Column(length = 30)
private String propertyState;

实体中的字段有访问模式的概念。如果你想使用混合访问模式(即对某些属性的字段使用注释,对其他属性的 getter 使用注释),你也可以这样做。

例如:

设置实体 的默认访问模式。

@Entity
@Access(AccessType.FIELD)
public class Test implements Serializable {..}

这将默认需要字段级别的注释。然后,对于要在 getter 上注释的属性,将访问类型显式设置为 PROPERTY:

@Access(AccessType.PROPERTY)
@Column(length=25)
public String getInfo() { return info; }

最新更新