选择使用hibernate插入的最后一个实体

时间:2012-12-10 09:23:54

标签: java hibernate

我正在尝试获取插入到数据库中的最后一个实体,我认为这是一件非常简单的事情,但我尝试的每个查询都会导致某种异常被抛出

我正在使用的代码是:

@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

数据库中肯定有记录。

有什么想法吗?

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()运行它,如上所示。