1

HQL に変更する必要があるネイティブ クエリがあります。

元のクエリは次のとおりです。

SELECT COUNT(DISTINCT `table`.`id`) FROM `database`.`table` WHERE
(`table`.`date`" " BETWEEN '" + year + "-01-01 00:00:00' AND '" + year
+ "-12-31 23:59:59') AND `table`.`box` NOT LIKE '' GROUP BY MONTH(`table`.`date`)";

私は次のようなものを試しました:

StringBuilder hql = new StringBuilder(); 
hql.append(" select count(distinct table.id)"); 
hql.append(" from Table table");
hql.append(" where table.date between '?-01-01 00:00:00' and '?-12-31 23:59:59'");
hql.append(" and table.box not like ''"); 
hql.append("group by month (table.date)"); 
query.setParameter(1, Integer.toString(year)); 
query.setParameter(2, Integer.toString(year));

year は引数としてメソッドに渡される int です。

生成されたクエリは次のとおりです。

Hibernate: select count(distinct table0_.id) as col_0_0_ from table table0_ where (table0_.date between '2013-01-01 00:00:00' and '2013-12-31 23:59:59') and (table0_.box not like '') group by month(table0_.date)

私の問題は、ネイティブ クエリを使用して 1 つの値を取得し、hql を使用して 2 月 (2 月) の別の値を取得することです。月 1 (1 月) の結果は同じです。

ここで何が欠けていますか?

前もって感謝します、

グルドヴィヒ

4

1 に答える 1

0

私には、スキーマ修飾のない同じクエリのようです。それらを別のインスタンスで実行していませんか?同様に、1 つは「データベース」にあり、もう 1 つは同様のデータがロードされた別のベースを指していますか?

于 2013-02-25T12:53:26.833 に答える