可嵌入属性更改列的默认大小

时间:2012-05-22 10:28:59

标签: hibernate jpa

我想使用JPA和Hibernate创建一个映射类。对于其大多数属性,此类使用多语言属性。例如,它希望在语言LanA和语言LanB中都具有name属性。

@Embeddable
public class MultiLingualTO {
@Basic
@Column(updatable = true, length = 50, nullable = false, name = "aStr")
public String getLanAString() {
    return lanAString;
}

public void setLanAString(String lanAString) {
    this.lanAString= lanAString;
}


@Basic
@Column(updatable = true, length = 50, nullable = false, name = "lStr")
public String getLatinString() {
    return latinStringh;
}

public void setLatinString(String latinStringh) {
    this.latinStringh = latinStringh;
}

private String lanAString;
private String latinStringh;

}

但这些字符串的长度不同。默认值为50,但有时我想设置值250或900.

有办法吗?

1 个答案:

答案 0 :(得分:0)

假设您想根据嵌入组件的人来更改长度,那么是。您@Embeddable的消费者可能会为列定义@AttributeOverride。像这样:

    @Embedded
    @AttributeOverrides( {
        @AttributeOverride(name="aStr", column = @Column(length=250) ),
        @AttributeOverride(name="lStr", column = @Column(length=900) )
    } )
    private MultiLingualTO multiLingualTO;

请参阅Hibernate Annotations文档中的“2.2.2.4。嵌入式对象(也称为组件)”http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e714

length是一个整数。