java - 升级到休眠 5.1 时出现 QuerySyntaxException
问题描述
我正在使用注释使用休眠 4.3,但没有任何映射问题。我迁移到休眠 5.1,但遇到映射问题。
我检查了我的 DAO 并且查询使用了与我的实体类相同的名称,这是每个人都建议的解决方案。
这是我的实体类
@Entity
@Table(name = "__maintenance", uniqueConstraints = @UniqueConstraint(columnNames = "name"))
public class __Maintenance implements java.io.Serializable {
private static final long serialVersionUID = 7217691607923908432L;
private int idMaintenance;
private int version;
private String storyNumber;
private String name;
private Date startDate;
private Date endDate;
private String comments;
public __Maintenance() {
this.version = 1;
}
@Deprecated
public __Maintenance(String storyNumber, String name) {
this.storyNumber = storyNumber;
this.name = name;
}
@Deprecated
public __Maintenance(String storyNumber, String name, Date startDate, Date endDate, String comments) {
this.storyNumber = storyNumber;
this.name = name;
this.startDate = startDate;
this.endDate = endDate;
this.comments = comments;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idMaintenance", unique = true, nullable = false)
public int getIdMaintenance() {
return this.idMaintenance;
}
public void setIdMaintenance(int idMaintenance) {
this.idMaintenance = idMaintenance;
}
@Column(name = "version", nullable = false)
public int getVersion() {
return this.version;
}
public void setVersion(int version) {
this.version = version;
}
@Column(name = "story_number", nullable = false, length = 50)
public String getStoryNumber() {
return this.storyNumber;
}
public void setStoryNumber(String storyNumber) {
this.storyNumber = storyNumber;
}
@Column(name = "name", unique = true, nullable = false, length = 50)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "start_datetime", length = 19)
public Date getStartDate() {
return this.startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "end_datetime", length = 19)
public Date getEndDate() {
return this.endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
@Column(name = "comments", length = 65535)
public String getComments() {
return this.comments;
}
public void setComments(String comments) {
this.comments = comments;
}
这是我的查询
String query = "";
query += "select m from __Maintenance m";
query += " where m.name = :name ";
query += " order by ";
query += " m.startDate desc, m.idMaintenance desc";
return super.list(query, "name", name);
}
以下是我的例外
引起:org.hibernate.hql.internal.ast.QuerySyntaxException:__Maintenance 未映射 [从 __Maintenance m 中选择 m,其中 m.name = :name order by m.startDate desc, m.idMaintenance desc] at org.hibernate.hql .internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79) 在 org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218) ) 在 org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115) 在 org.hibernate.engine.query 的 org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142) .spi.HQLQueryPlan.(HQLQueryPlan.java:76)
解决方案
配置中似乎缺少该表。该表是在 persistence.xml 还是 javaconfig 文件中声明的?
推荐阅读
- python - 在mysql数据库上使用python插入表时出现Sql语法错误
- python - Flask/FastAPI SQLite pytest 夹具返回 None 除非指定行 ID
- c++ - 在 C++ 中读取大文件,但也在 C++ 中读取小文件?
- c++ - 有人可以解释指针引用如何与 pthread 一起使用吗?
- three.js - 在 Three.js 中访问 VR 耳机方向
- javascript - Firebase 时间戳 .toDate() 不是基金操作,无法读取未定义的属性“toDate”
- regex - Haskell 检查由单个符号字母 Σ = {a} 组成的正则表达式 r 是否定义语言 L(r) = a*
- vb.net - Oracle.DataAccess.Client.OracleException: ORA-00900: 无效的 SQL 语句
- r - 使用 ampvis2 Boxplot 尝试 Scale_color_manual 没有结果
- python - 将星期六和星期日更改为星期五