私は現在、Hibernate 5.0.7を使用しています.HQLクエリの制限(主にTOPまたはLIMIT能力の欠如)のために、ネイティブSQLクエリを実装しようとしています。 私たちのリポジトリがインターフェイスからの春の豆として結ばれているため、データを取得するために注釈付きクエリと機能クエリを組み合わせて使用しています。ネイティブアノテーション付きクエリで適切なストリーム結果を取得していますか?
しかし
@Query(value = "SELECT * FROM some_table where (id = ?1)", nativeQuery = true)
Stream<MyObject> getMyObjectByIds(String userId);
次のように私のクエリのサンプルがあります。私の実際のクエリはより複雑で、GroupBy(機能クエリにはないようなもの)とTop(HQLクエリにはないようなものがあります)を使用します。
私たちのデータベースのすべてのテーブルとアイテムマッピングされたエンティティであり、現在データベースにあるすべてのデータは、これらの休止状態のエンティティによって開始されます。今、私は私のクエリを実行すると、私は実際にそれは私が
バック
{2, 3, 5, Whatever, null}
を取得し終わると、私のデータベースに私は正確にいくつかの行の値
を持っている私のデータである必要があり、非常にのように見えるその背中結果を得ますしかし
{2, 3, 5, Whatever, NULL}
、私は私が私の関数型は、私は人々がいるように見えるまで見てきたものから、エラー今
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [com.myorg.models.MyObject] for value '{2, 3, 5, Whatever, null}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [com.myorg.models.MyObject]
で終わる私のネイティブクエリからよう設定されているストリームオブジェクトにアクセスしようそれを示唆トンがどこかの場所ではありませんSqlResultSetMappingマッピングがある、と私は私のエンティティに見れば、そのようなマッピング
@Entity
@NamedEntityGraph(
name = "MyObject.withChildren",
attributeNodes = @NamedAttributeNode(value = "objectChildren")
)
@Getter
@Setter
@Table(name = "object_table", schema = "my_table")
public class MyObject implements Serializable {
が実際に存在しない、私は実際にも、いくつかのものを見て、マッピング
を実装しようとしました@SqlResultSetMapping(
name = "ObjectMapping",
entities = {
@EntityResult(
entityClass = MyObject.class,
fields = {
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "childId", column = "child_id"),
@FieldResult(name = "someNumber", column = "some_numbur"),
@FieldResult(name = "someString", column = "some_string"),
@FieldResult(name = "someNullableType", column = "null_type_column")
}
)
}
)
と私のエンティティクラスに固執しましたが、実際にはどのように/なぜ/これが必要なのかわからなくても、それはうまく動作しませんでした。これは私のコード/問題のかなり難読化された記述であることが認められていますが、私は行方不明のものがありますか、誰かが私が間違っているかもしれないことを知っていますか?
人々が提供してくれるすべてのヘルプに感謝しています。
列の名前の問題があります。結果クエリの列名が正確に指定されていることを確認します。例えば。 'count(*)'だけを使用して 'count(*)some_number'を追加すると – StanislavL