我正在尝试获取插入到数据库中的最后一个实体,我认为这是一件非常简单的事情,但我尝试的每个查询都会导致某种异常被抛出
我正在使用的代码是:
@Override
public DataStoreMark getLastMark() {
String selectQuery = "from Mark";
Query query = em.createNativeQuery(selectQuery, DataStoreMark.class);
try {
return (DataStoreMark) query.getSingleResult();
} catch (NoResultException e) {
log.error("Couldn't find any Marks in the DataStore.");
}
return null;
}
但是这段代码抛出了一个PesistenceException:
org.hibernate.exception.SQLGrammarException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from milestone' at line 1
数据库中肯定有记录。
有什么想法吗?
答案 0 :(得分:0)
如果不起作用,您可以使用createQuery()
和createSqlQuery()
:
1
String selectQuery = "from Mark";
Query query = em.createQuery(selectQuery);
return (DataStoreMark) query.list().get(0);
2
String selectQuery = "select * from Mark";
SQLQuery query = (SQLQuery) em.createSQLQuery(selectQuery);
query.addEntity(DataStoreMark.class);
return query.list();
我认为hibernate没有告诉最后一个实体添加到数据库中。或者,您可以编写特定于您的数据库的查询,并使用createSqlQuery()
运行它,如上所示。