1

私は結合を使用して HQL でクエリを作成しています。

私のクエリは次のようになります:

From HistoryPerPhraseEntity as history left join history.linkAddressByLinkId where history.serviceId = :serviceId

クエリは問題ありませんでしたが、DataBase オブジェクトに応答をスローして次のような値を取得しようとしたとき:

historyPhrase.get(0).getPhraseId()

私が持っている:

[Ljava.lang.Object; cannot be cast to com.rasp.lta.domain.HistoryPerPhraseEntity

しかし、これに変更した後:

Select history From HistoryPerPhraseEntity as history left join history.linkAddressByLinkId where history.serviceId = :serviceId

全て大丈夫。

このクエリで「選択元」が必要な理由を誰か答えてもらえますか?

ありがとう

4

1 に答える 1

2

明示的な SELECT がないと、Hibernate は HistoryPerPhraseEntity のインスタンスのみを返す必要があると判断できないためです。結合されたエンティティも返します。

そのため、List of Object 配列が返されます。配列の最初のインデックスには HistoryPerPhraseEntity が含まれ、2 番目のインデックスのオブジェクトのタイプは linkAddressByLinkId コレクションの要素のタイプと同じです。

何らかの理由で、最初のクエリで返された HistoryPerPhraseEntity のみにアクセスしたい場合は、返されたリストの各要素を にObject[]キャストObject[0]し、キャストすることで実行できます。HistoryPerPhraseEntity

ただし、SELECT を使用することをお勧めします。

于 2012-07-02T17:14:41.143 に答える