是否有任何约定如何在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