IntelliJ对我来说太聪明了

时间:2011-03-01 14:12:41

标签: java jpa intellij-idea

我想用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+"")
})

3 个答案:

答案 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很聪明,知道什么是。