2016-08-12 5 views
7

データベースからデータをフェッチするために、以下のハイバネートコードを使用しています。データベースレコード内のフィールドがnullの場合、HIbernateは値を取得しません。

SessionFactory factory = null; 
    Session session = null; 
    try { 
     factory = getSessionFactory(); 
     session = factory.openSession(); 

     final Criteria criteria = session 
       .createCriteria(CrfEmailDataBean.class); 
     criteria.add(Restrictions.eq(CAMPN_NBR, campNbr)); 
     returnList = criteria.list(); 
    } catch (Exception e) { 
     logger.error(e.getMessage()); 
     throw new DAOException(e); 
    } finally { 
     DBUtil.close(factory, session); 
    } 
    if (logger.isInfoEnabled()) { 
     logger.info(LOG_METHOD_EXIT); 
    } 
    return returnList; 
} 

CrfEmailDataBean classの内部では、私は、データベース内のnullでprivate String crfEmailTypeCd;フィールドを宣言しました。 nullのため、リターンリストにレコードを設定していません。私が行って、データベースのフィールドの中に値を入力すると、それはフェッチされます。

私はSQLデータベースで直接クエリを実行しようとしましたが、作成されたクエリは正しいものであり、すべてのデータをフェッチします。

なぜそのレコードを取得していないのですか?どうすれば解決できますか?

+0

ポストCrfEmailDataBeanクラスだけでなく – StanislavL

+0

@StanislavLそのを送信呼び出す作る

  • getterとsetterを持つ通常のデータbean – themaster

  • +0

    本当の問題は何ですか?クエリが期待通りに機能しないか、または 'CrfEmailDataBean'インスタンスの保存が正しく機能していませんか? –

    答えて

    0

    あなたが同じプリミティブ型のプロパティを使用する場合、デフォルト値を設定する必要が、同じゼロ(0)または(A)(..)

    private int number; 
    private int value; 
    private char option; 
    

    休止データベース準備ヌルは、Hibernate発電機のコンバータであればこの決してユーザープリミティブ型

  • またはプロパティ
  • のためのデデフォルト値を定義し、それぞれ他の可能性は、あなたの日付がNではないため、エラー

    • ソリューションull、この値は白です
    • 白はnullとは異なります
    • テスト条件を設定するRestrictions.isNotNull。
    • 他のテスト条件を作成するRestrictions.isNull。他のテストは、メソッドがintを受け取り、1つのINTEGER NULL

    最初の項目

    private Integer number; 
    private Integer value; 
    private Character option; 
    

    最後の項目のテスト

    public class Test{ 
    
        public static void setInt(int value){ 
         System.out.println(value); 
        } 
    
        public static void main(String[] args) 
        { 
         Integer testValue=null; 
         Test.setInt(testValue); 
        } } 
    
  • 関連する問題