我正在使用Java 1.7和Hibernate 4.1.9。我对Hibernate相对来说比较新,所以如果我遗漏了任何关键信息,请告诉我。我在我的课叫做Meeting
包含此有javax.persistence.Entity
:使用属性名称不同于列名的query.setParameter
@Column(name = "ballot_id")
private Long ballotId;
public Long getBallotId() {
return ballotId;
}
public void setBallotId(Long ballotId) {
this.ballotId = ballotId;
}
我试图构建一个这样的查询:
Query query = session.createQuery("from Meeting m where m.ballotId=:ballotId");
query.setParameter("ballotId", someLongValue);
meeting = (Meeting) query.uniqueResult();
但我得到一个org.hibernate.exception.SQLGrammarException: Unknown column 'meeting0_.ballotId' in 'field list'
错误。看起来,像这样构建查询时,Hibernate不会检查指示数据库列名称与对象属性名称不同的注释。有没有另外一种方式来做到这一点,或者是否有我需要为此添加的东西?也许我错过了一些东西,或者弄错了HQL?
谢谢!
感谢您的回复亚历山大。我曾尝试过,但它会产生此错误:'org.hibernate.QueryException:无法解析属性:ballot_id',这似乎是退后一步。 –
@KevinLawrence做了一个更新,希望它有帮助! –
非常奇怪,这可以帮助,但该字段中的注释应该工作... – acdcjunior