我想用IntelliJ IDEA实现简单的jpa命名查询,使用最终的字符串来定义参数。但是检查员不喜欢它并且在查询的第一部分结尾处告诉我“意外的令牌”到':'。如何抑制检查或如何说服检查接受检查。
@NamedQueries({
@NamedQuery(name = TaxonEntity.selectBytaxonId,
query = "SELECT t FROM TaxonEntity t WHERE t.taxonId =:" + TaxonEntity.TAXON_ID)
})
@Entity
public class TaxonEntity {
static public final String selectBytaxonId = "TaxonEntity.selectBytaxonId";
static public final String TAXON_ID = "taxonId";
....
}
提前致谢,
Medrod
更新: 如果在常量后附加一个String,IntelliJ IDEA将接受查询。
@NamedQueries({
@NamedQuery(name = TaxonEntity.selectBytaxonId,
query = "SELECT t FROM TaxonEntity t WHERE t.taxonId =:"+TaxonEntity.TAXON_ID+"")
})
答案 0 :(得分:2)
试试这个
@NamedQueries({
@NamedQuery(name = TaxonEntity.selectBytaxonId,
query = "SELECT t FROM TaxonEntity t WHERE t.taxonId = " + TaxonEntity.TAXON_ID)
})
@Entity
public class TaxonEntity {
static public final String selectBytaxonId = ":TaxonEntity.selectBytaxonId";
或者,您可能只想使整个查询保持不变。它会更具可读性。
答案 1 :(得分:1)
作为解决方法,创建第二个常量,其中包含:
。
答案 2 :(得分:0)
您使用的是什么SQL数据库?
我记得SQL中的等号运算符是=
而不是=:
。
IDEA检查员抱怨的可能不是java检查员,而是SQL检查员。 IDEA很聪明,知道什么是。