我正在使用Java 1.7和Hibernate 4.1.9。我对Hibernate来说还比较陌生,因此,如果我遗漏了任何关键信息,请告诉我。我的班级中有一个javax.persistence.Entity,它包含以下内容:

@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();


但是我收到一个Meeting错误。似乎在构建这样的查询时,Hibernate不会检查表示数据库列名称与对象的属性名称不同的注释。有另一种方法可以执行此操作,还是需要为此添加一些内容?也许我错过了一些东西,还是HQL弄错了?

谢谢!

最佳答案

看起来更像您需要移动注释:

private Long ballotId;

@Column(name = "ballot_id")
public Long getBallotId() {
    return ballotId;
}

public void setBallotId(Long ballotId) {
    this.ballotId = ballotId;
}


根据此answer,您的HQL应该没问题。

10-01 19:02