8

私はこのコードを持っています:

public class Item { 
    @Column(name = "serialNo", length = 12)
    public String getSerialNo() {
        return this.serialNo;
    }

    public void setSerialNo(String serialNo) {
        this.serialNo = serialNo;
    }
}

ただし、データベース スキーマでは列の長さが 13 と定義されています。

List<Item> items = getEntityManager().createNamedQuery(SQL).getResultList();

serialNo(db テーブル スキーマでは 13 が許可されているため)文字が等しいデータは13、切り捨てられずに 13 として表示されます。その後の使用は何@Column lengthですか?

4

1 に答える 1

13

の属性は、フィールドjavax.persistence.Columnlength列の長さを定義するために使用されString(他のタイプでは無視されます) 、永続化フレームワークがエンティティからデータベース スキーマ (複数の )を生成する場合にのみ使用されます。 ):CREATE TABLEhibernate.cfg.xml

<property name="hbm2ddl.auto">create</property>

あなたの例では、列serialNoは として作成されますVARCHAR(12)

他のすべての目的 (データの挿入または取得) では、無視されます。



また、クラスでデータベースのメタデータ情報を「文書化」 する場合にも役立ちます。このようにして、 「値が長すぎる」または「データの切り捨て」のような例外を挿入して回避する前に、保存する値を検証できます。

于 2013-05-17T01:15:41.160 に答える