14
List<Lahetys> last = session.createQuery("from lahetys order by lahetysNro DESC LIMIT 1").list();

そして私が得たログで:

INFO: Hibernate: select  from order by  lahetysNro DESC LIMIT 1
WARN: SQL Error: 1064, SQLState: 42000
ERROR: 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 order by  lahetysNro DESC LIMIT 1' at line 1

「from LAHETYS」はどうなりましたか?HQLまたは/およびSQLでそれを処理するためのベストプラクティスは何ですか?

別の問題:

Lahetys last = (Lahetys)session.createSQLQuery("select * from lahetys order by lahetysNro DESC LIMIT 1").uniqueResult();
session.getTransaction().commit();  

そして私は例外を受け取ります:

Ljava.lang.Object; cannot be cast to Lahetys 

オブジェクトを自分の Lahetys オブジェクトにキャストすることはできません。

ありがとうございました!サーミ語

4

2 に答える 2

30

HQL クエリが無効です。LIMIT は有効な HQL 句ではありません。Hibernateでそれを行うには、次のようにします

Query query = session.createQuery("from lahetys order by lahetysNro DESC");
query.setMaxResults(1);
Lahetys last = (Lahetys) query.uniqueResult();
于 2012-10-25T14:13:00.983 に答える
8

HQL を使用している場合は、tableName の代わりに完全修飾の className を指定する必要があります。同じ方法で、columnName の代わりに propertyName を指定する必要があります。また、どちらも大文字と小文字が区別されることに注意してください。

クエリと取得している例外を見て、lahetysがテーブル名であり、lahetysNroが列名であると想定しています。

例を使用する必要があります: Lahetysクラスがcomフォルダーにある場合:

List<Lahetys> last = session.createQuery("from com.Lahetys order by lahetysNro DESC LIMIT 1").list();

2番目の質問について:

ここでは、HQL の代わりに SQL を使用しています。このように hibernate で SQL を使用すると、常にList<Object[]>& notが返されますList<Lahetys[]>

于 2012-10-25T14:25:19.523 に答える