0

JPQLでnamedqueryを作成したいのですが、どのように機能するのかわかりません...

ここに私の実体:

@Entity
@NamedQueries({ 
    @NamedQuery(name = "Translation.lang", 
                query = "SELECT t FROM Translation t WHERE t.reference.id = :refId AND t.language.lang = :lang")
})
@Table(name = "T_E_TRANSLATION_TRL")
public class Translation implements java.io.Serializable {

@Id
@Column(name = "TRL_ID", unique = true, nullable = false)
@TableGenerator(name="translationSeqStore", 
    table="T_S_APP_SEQ_STORE_AST", 
    pkColumnName="AST_SEQ_NAME",
    valueColumnName = "AST_SEQ_VALUE",
    pkColumnValue = "T_E_TRANSLATION_TRL.TRL_ID", 
    allocationSize=1)
@GeneratedValue(strategy=GenerationType.TABLE, 
    generator="translationSeqStore")            
private Integer id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TRL_REF_ID", nullable = false)  
private Reference reference;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TRL_LAN_ID", nullable = false)  
private Language language;

@Column(name = "TRL_LABEL", nullable = false, length = 4000)    
private String label;

Reference&LanguageでLEFT JOINを使用して、これらのIDで翻訳を選択する必要がありますか?

ありがとうございました。

4

1 に答える 1

0

私はあなたが欲しいと思います:

SELECT t FROM Translation t join fetch t.reference join fetch t.language WHERE t.reference.id = :refId AND t.language.lang = :lang

これは結合し(そしてLAZY参照と言語をフェッチし)、TranslationIDを持つ参照refIdとlang=を持つ言語のsを返しlangます。

于 2012-08-08T12:10:27.807 に答える