0

有什么方法可以使用 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;
    }
}

我想使用hibernate-maven-plugin对这个类进行逆向工程,我想在@Column注释中添加“varchar 35”或其他东西,这样当我进行逆向工程时,字段会按照我指定的方式创建并使用我指定的长度。

此外,在 java 字段(例如私有长年龄)和 getter 方法(我通常在哪里看到它)上使用“列”注释有什么区别?

4

3 回答 3

1

就在这里。Column 注释中的属性columnDefinition就是为了满足这种需求。如果不需要对生成的 SQL DDL 进行如此详细的控制 - 长度、精度和比例属性可能很有用。

您不应该将持久性注释传播到字段和方法。只要它们始终如一地放置,就可以了。提供的持久性(如 Hibernate)选择它是否使用字段或方法来根据注释所在的位置来持久化值。如果两者都存在,则结果未定义且不太可能起作用。

于 2012-06-25T05:40:14.690 回答
0

这是示例

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

@Column(length = 30)
private String propertyState;
于 2012-06-25T05:52:21.423 回答
0

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

例如 :

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

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

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

@Access(AccessType.PROPERTY)
@Column(length=25)
public String getInfo() { return info; }
于 2019-06-26T09:32:28.127 回答