3

私は今日、GORM に関する以前の質問をしました: How to fetch records in grails by max date and group at same time しかし、誰かが HQL を使用して簡単に達成できると提案しました。しかし、HQL を使用するとunexpected tokenエラーが発生します。これを調査したところ、HQL はINNER JOINS2 つのエンティティ間に関連付けがない限り許可されないことがわかりました: HQL、同じテーブルでの左結合

だから、私は迷っています。まず、このような単純なクエリが GORM でサポートされていないことに不満を感じており、現在は HQL で私の質問は次のとおりです。サブセットで INNER JOIN を実行するにはどうすればよいですか?

私が試したこと:

予期しないトークン: (行 1 の近く、列 16 [ ( select name, max(dateCreated) as maxTime from com.mine.Color group by name ) から c を選択 ) as t inner join Color c on c.name = t.name and c .dateCreated = t.maxTime ]

Colorパッケージ名が自動的に接頭辞として付けられなかったため、 の 2 番目のインスタンスが検出されなかったと思われます。だから私が試した他の答えを読んでください:

予期しないトークン: (行 1、列 16 の近く [ select c from ( select name, max(dateCreated) as maxTime from com.mine.Color group by name ) as t 、 com.mine.Color as c on c.name = t .name および c.dateCreated = t.maxTime ]

4

1 に答える 1

2

どうぞ:

Color.executeQuery("""    
    Select c
    From Color c
    where c.dateCreated = (select max(b.dateCreated) from Color b where b.name = c.name)
    """)
于 2013-01-23T22:55:41.803 に答える