1

私は休止状態と春を使用しています。これは私のモデルクラスです

@Entity
@NamedNativeQueries({@NamedNativeQuery(
        name = "CSI_TARGET", 
        query = "select * from CSITARGET('CSIINDEX',2)",
        resultClass = CSITarget.class)})
public class CSITarget {


    @Column(name="csi_target")
    private BigDecimal csi_target;

    @Id
    @Column(name="financialyearfrom"  ,nullable = true)
    private int  financialyearfrom =0;

    @Column( name="at_yearhalf" , nullable = true)
    private  String at_yearhalf = "";

    public BigDecimal getCsi_target() {
        return csi_target;
    }

    public void setCsi_target(BigDecimal csi_target) {
        this.csi_target = csi_target;
    }

    public int getFinancialyearfrom() {
        return financialyearfrom;
    }

    public void setFinancialyearfrom(int financialyearfrom) {
        this.financialyearfrom = financialyearfrom;
    }

    public String getAt_yearhalf() {
        return at_yearhalf;
    }

    public void setAt_yearhalf(String at_yearhalf) {
        this.at_yearhalf = at_yearhalf;
    }

Hibernate を使用して postgres データベースのストアド プロシージャを呼び出しています。ストアド プロシージャは、このモデル クラスにマップされたテーブルを返します。今私の問題は、データベースから返されたテーブルに null 値が含まれていることです。データを操作する必要があります。現在、null 値が Bean クラスにマップされているため、null ポインター例外が発生しています。休止状態でデータベースの null 値を無視し、Bean クラスの対応するプロパティにデフォルト値を設定するにはどうすればよいですか。ご覧のとおり、nullable プロパティも使用しています。うまくいきません。

4

2 に答える 2

2

financialyearfrom列がnull可能として定義されている場合、対応する列に値intを割り当てることができません。データベースに値がある可能性があります。nullnull

Java プリミティブ変数で null 値を処理するには、nullable=trueデフォルト値 0 を削除して追加することもできます。これにより、db 列のすべての null 値が 0 または 0.0 などに変換されます。

または

代わりにラッパー クラスを使用します。つまりInteger、db 列から割り当てられた null 値を保持できます。

Hibernate繰り返しますが、上記の 2 つのアプローチは一般に、エンティティで使用するプリミティブ変数に適用できます。

さらに、@ID主キー列に対応する場合(ほとんどの場合はそうです)、列をnull可能IMOにするべきではありません。主キー列はnull値を許可しないため、コードは間違っています。

于 2013-05-06T10:57:55.897 に答える