0

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

@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 错误?

谢谢!

4

2 回答 2

1

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

private Long ballotId;

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

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

根据这个答案,你的 HQL 应该没问题。

于 2013-05-16T03:05:31.373 回答
0

例外:

  • org.hibernate.exception.SQLGrammarException: Unknown column 'someTable.someColumn' in 'field list'

  • org.hibernate.exception.SQLGrammarException: Column "someTable.someColumn" not found;

问题:someColumn 表中不存在列(不是字段!)(由someTable实体引用)。

确保它存在。

如果您有@Column(name = "someColumn")注释,请确保它正在被读取(是否放置在正确的位置?字段吸气剂?不是两者)。你必须AnnotationConfiguration在配置你SessionFactory的时候使用它们才能工作。另外,检查您是否还有xml映射文件,它可能会覆盖注释。

于 2013-05-16T03:39:47.923 回答