我正在使用@Modifying 和@Query 注釋直接執行我的sql 語句,但是我得到一個錯誤,告訴我我的表沒有映射,所以我不知道我做錯了什么,這是我的代碼:@Repositorypublic interface TypesContratDaoJPA extends CrudRepository<Type, Long> { @Query("select type_id from declaration_type where declaration_id=:declaration") List<Integer> getListTypes(@Param("declaration") int declaration); @Modifying @Query("insert into declaration_type values(:declaration,:type)") void addTypeToContrat(@Param("declaration") int declaration, @Param("type") int type); @Modifying @Query("delete from declaration_type where declaration_id=:declaration and type_id=:type")void deleteTypeFromContrat(@Param("declaration") int declaration, @Param("type") int type);}我收到此錯誤:Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: declaration_type is not mapped [delete from declaration_type where declaration_id=:declaration and type_id=:type]at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:670)at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)...... ... ...任何幫助將非常感激。
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
看起來您想要執行本機查詢而不是 JPQL 查詢。
為了將查詢標記為本機,您應該將其添加為注釋nativeQuery = true
上的屬性。@Query
例如,您的第一個查詢應如下所示:
@Query("select type_id from declaration_type where declaration_id=:declaration", nativeQuery = true) List<Integer> getListTypes(@Param("declaration") int declaration);
如果您不添加nativeQuery = true
查詢注釋,則該查詢被視為 JPQL 查詢。
因此,為了使您的第一個查詢工作,您將必須有一個名為的類,該類declaration_type
用 注釋@Entity
并且具有名為declaration_id
and的字段type_id
。您應該查看一些 JPQL 教程(或文檔)以了解有關這些類型查詢的更多信息。
添加回答
舉報
0/150
提交
取消