では無効に入力します。 列は、これが私のリポジトリですNATIVEクエリJPQL
@Repository
public interface EventRepository extends JpaRepository<Events, Long>, JpaSpecificationExecutor<Events>{
@Query(value=" SELECT DISTINCT event.EVENT_ID "
+ "FROM EVENTS event "
+ "JOIN EVENTS event2 "
+ "ON event.EVENT_ID = event2.PARENT_ID "
+ "WHERE event.ENTITY_ID IN (?1)", nativeQuery = true)
List<Long> getDescendantEventIdInEntityId(Set<Long> descendantEntities);
}
なぜ、このメソッドが呼び出されたとき、それはリターンです: 内部例外:java.sql.SQLExceptionを:ティポ・ディ・コロンナ非valido エラーコード:17004 コール:EVENTSイベントからDISTINCT event.EVENT_IDをSELECT、JOIN EVENTSイベント2 ON event.EVENT_ID = event2.PARENT_ID event.ENTITY_ID、IN バインド=> [[1]]と間違っているものを
(?)クエリ? クエリが正常であれば、その "bind => [[1]]"は本当の問題ですか?はいの場合、角括弧が多すぎるのはなぜですか?
私もこのソリューション試してみた:
@Query(value=" SELECT DISTINCT event2.EVENT_ID "
+ "FROM EVENTS event "
+ "JOIN EVENTS event2 "
+ "ON event.EVENT_ID = event2.PARENT_ID "
+ "WHERE event.ENTITY_ID IN :entitiesId", nativeQuery = true)
List<Long> getDescendantEventIdInEntityId(@Param("entitiesId") Set<Long> entitiesId);
を、それは私に別のエラーを返す:17041 コール:DISTINCT event2.EVENT_IDをSELECTインデックス:: 1つの エラーコードで 欠落INまたはOUTパラメータをentitiesId
SOLUTION:EntityManagerのから新しいnativeQueryを作成解決:
EVENTSイベントからイベントイベント2 ON event.EVENT_ID = event2.PARENT_ID event.ENTITY_ID INが登録しようここで、idListはStringUtils.join(CollectionOfId、 "、")によって作成されたストリングです。
私はすでにこのソリューションを試しましたが、別のタイプのエラーを返します。 更新された質問を確認してください – Innet
Paramアノテーションの完全修飾語を教えてください。それはorg.springframework.data.repository.query.Paramですか?あなたのケースでは、渡された価値が見当たりません。 –
これはparamアノテーションのインポート行です。 _import org.springframework.data.repository.query.Param; _ 値がnullではないことを確信しています – Innet