0

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

我使用的代码是:

@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

而且数据库里肯定有记录。

有任何想法吗?

4

1 回答 1

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

于 2012-12-10T10:05:50.577 回答