使用修改和查询注释时我的表没有映射?

我正在使用@Modifying 和@Query 注释直接执行我的sql 语句,但是我得到一个错误,告诉我我的表没有映射,所以我不知道我做错了什么,这是我的代码:


@Repository

public 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)


...

... 

... 

...

任何帮助将非常感激。


慕桂英546537
浏览 86回答 1
1回答

BIG阳

看起来您想要执行本机查询而不是 JPQL 查询。为了将查询标记为本机,您应该将其添加为注释nativeQuery = true上的属性。@Query例如,您的第一个查询应如下所示:@Query("select&nbsp;type_id&nbsp;from&nbsp;declaration_type&nbsp;where&nbsp;declaration_id=:declaration",&nbsp;nativeQuery&nbsp;=&nbsp;true) &nbsp;&nbsp;&nbsp;&nbsp;List<Integer>&nbsp;getListTypes(@Param("declaration")&nbsp;int&nbsp;declaration);如果您不添加nativeQuery = true查询注释,则该查询被视为 JPQL 查询。因此,为了使您的第一个查询工作,您将必须有一个名为的类,该类declaration_type用 注释@Entity并且具有名为declaration_idand的字段type_id。您应该查看一些 JPQL 教程(或文档)以了解有关这些类型查询的更多信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java