1

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 などの値を設定したい場合があります。

そうする方法はありますか?

4

1 に答える 1

0

コンポーネントを埋め込んでいる人に基づいて長さを変更したいと仮定すると、はい。の消費者は、列@Embeddableの を定義でき@AttributeOverrideます。このようなもの:

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

Hibernate Annotations のドキュメントhttp://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e714の「2.2.2.4. 埋め込みオブジェクト (別名コンポーネント)」を参照してください。

lengthは整数です。

于 2012-05-22T12:13:50.580 に答える