2017-03-15 10 views
-2

でフェッチ参加します。私は "フェッチ"を削除すると動作します。しかし、DossierAccountとDossierの関連付けは「遅延」と指定されており、変更したくありません。しかし、この特別なケースでは、文書が熱心に読み込まれている必要があります。HibernateはHQLは、私は、次のHQLのステートメントを実行しようとしているコンストラクタ

コンストラクタコールを変数 "accountNumber"に置き換えると、これも機能します。しかし、私はここで選択されたプロパティの数を減らす必要があります。

select文で組み込みコンストラクタ呼び出しを使用する方法はありますか?

もう1つの質問:私はまた、結合された一式の選択されたプロパティの数を制限する必要があります。これを達成する方法もありますか?

+0

'fetch'を削除して関連付けを' LAZY'にするとどうなりますか? – Tobb

+0

関連する書類がロードされていませんが、この場合にはそれが必要です – thmayr

+0

DossierAccountには値が入力されていません。 – Tobb

答えて

0

今私はさらに一歩進んでいます。この目的のために

 queryString = "select new DossierAccount((select dossier from Dossier as dossier where dossier.dossierId=dossierAccount.dossier.dossierId),dossierAccount.accountNumber) from DossierAccount as dossierAccount" + 
        " where dossierAccount.dossier.kycId.id != :kycId and dossierAccount.accountNumber in :accountNumbers"; 

次のコンストラクタが必要とされる:

public DossierAccount(Dossier dossier, AccountNumber accountNumber) { 
    this.accountNumber = accountNumber; 
    this.dossier  = dossier; 
} 

しかし、これは全体の一式文書をロードする次のクエリはDossierAccountと熱心な一式文書の間の関連付けを宣言せずに、一式文書少なくとも選択します私が必要としないメモリ内のデータ。だから私は、次のステートメントで一式文書のプロパティの制限されたセットを選択しようとしました:

 queryString = "select new DossierAccount((select new Dossier(dossier.kycId,dossier.relationshipName) from Dossier as dossier where dossier.dossierId=dossierAccount.dossier.dossierId),dossierAccount.accountNumber) from DossierAccount as dossierAccount" + 
        " where dossierAccount.dossier.kycId.id != :kycId and dossierAccount.accountNumber in :accountNumbers"; 

しかし、これはにつながる「ava.lang.UnsupportedOperationException:!のGetDataTypeは()ConstructorNodeでサポートされていません」例外

関連する問題