ハードコードされた値でフィルター注釈を付ける方法があるかどうか疑問に思いました。itemRateとratemasterという2つのテーブルを結合しています。レートマスターには、アプリケーションのrateidとratekindidの複合キーがあります。レートの種類IDは、3つのID(プライマリ、コンポーネント、アイテムレート)の1つにすることができます。
My Item Rateテーブルはアプリケーションを認識し、2つの異なる列item_rateとrate(プライマリレート)を参照します。
私の質問は、休止状態でフィルターをハードコーディングする方法があるので、呼び出すgetRate()
とレートの種類IDが0のgetItemRate()
すべてのレートでフィルターされ、呼び出すとレートの種類IDが2のすべてのレートでフィルターされますか?
レートが0のレートマスターを取得するために、次のようなことを試みました。
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CIITM_RATE", nullable = false , updatable = false, insertable = false, referencedColumnName = "RATE"),
@JoinColumn(name = "CIITM_APPLICATION", nullable = false , updatable = false, insertable = false, referencedColumnName = "APPLICATION") })
@FilterJoinTable(name = "kindId", condition="RATEKINDID = 0")
public Ciratemaster getRateMaster() {
return rateMaster;
}
これにより、レートの種類が2のレートマスターを取得できます。
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "CIITM_ITEM_RATE", nullable = false , updatable = false, insertable = false, referencedColumnName = "RATE"),
@JoinColumn(name = "CIITM_APPLICATION", nullable = false , updatable = false, insertable = false, referencedColumnName = "APPLICATION") })
@FilterJoinTable(name = "kindId", condition="RATEKINDID = 2")
public Ciratemaster getItemRateMaster() {
return itemRateMaster;
}
休止状態のWebサイトや他のサイトを検索してみましたが、実際には何も機能しませんでした。私はいつも、すべきでないときに複数の結果をフェッチしたというエラーを思い付きます
前もって感謝します。