是否有任何約定如何在JPQL
中命名參數?因爲今天經過一些調試後,我意識到我不能在內部輸入名稱,例如冒號。JPA NamedQuery參數
此外,我發現第二個問題,由於某些原因,我不能使用使用常量作爲參數名稱。我總是會得到
org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:466)
這裏是我的代碼
@NamedQueries({
@NamedQuery(
name=Lookup.GET_LOOKUP_DATA_QUERY,
query="SELECT t.textShort, lookup.metaCode, lookup.tableName FROM Lookup lookup, Txt t" +
" WHERE (lookup.metaCode = t.txtHeadCode OR t.txtHeadCode IS NULL) AND lookup.module.id =:" + Lookup.PARAM_MODULE_ID +
" AND lookup.metaCode IN (:" + Lookup.PARAM_LOOKUP_META_CODES + ") AND t.lang.metaCode = 'lang_cz'")
})
@Entity
@Table(name = "TABLE")
public class Lookup {
private static final long serialVersionUID = 1L;
public static final String GET_LOOKUP_DATA_QUERY = "Lookup.GetLookupDataQuery";
public static final String PARAM_MODULE_ID = "Lookup.PARAM_MODULE_ID";
public static final String PARAM_LOOKUP_META_CODES = "Lookup.PARAM_LOOKUP_META_CODES";
@Id
@Column(name ="META_CODE")
private String metaCode;
@Column(name = "ID")
private Long id;
@ManyToOne
@JoinColumn(name="MODULE_ID")
private Module module;
}
+的getter,setter和其他屬性
提供商是Hibernate
但查詢是用純JPA
也是如此有誰知道如何解決這個問題?
我更新了我的帖子(我把原來的常量值導致了我的問題)。在這個配置中,我無法構建查詢,並且正在獲取上述異常。根據規範,下劃線不會導致問題,但在我的情況下,當我刪除下劃線時,問題消失,所以這真的很奇怪 – 2012-07-30 10:39:04
下劃線不應該導致問題。如果是這樣,那麼它違反了規範。由於'。',所有使用的參數名都是無效的。正如Character.isJavaIdentifierPart所指定的那樣,它是無效的。 – 2012-07-30 10:42:36
現在我明白了,謝謝你的回答 – 2012-07-30 10:49:05