相关疑难解决方法(0)

JpaRepository不支持DML操作[删除查询]

我在扩展JPaRepository的界面中编写了一个删除某些对象的查询,但是当我执行查询时它抛出异常!谁能为我解释一下,并提前谢谢你:)

查询:

public interface LimitRepository extends JpaRepository<CLimit, Long> {

  @Query("delete from CLimit l where l.trader.id =:#{#trader.id}")
  void deleteLimitsByTrader(@Param("trader") CTrader trader);

}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误,可以任意请,为我解释一下,谢谢大家:)

例外:

  org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.query.domain.CLimit l where l.trader.id =:__$synthetic$__1]
      at org.hibernate.hql.internal.ast.QueryTranslatorImpl.errorIfDML(QueryTranslatorImpl.java:318)
      at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:369)
      at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
      at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
      at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
      at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573)
      at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:495)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:364)
      at com.sun.proxy.$Proxy98.getSingleResult(Unknown Source)
      at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:206)
      at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78)
      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:102)
      at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:92)
      at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:482)
      at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate hql spring-data-jpa

51
推荐指数
3
解决办法
4万
查看次数

使用@Query,使用hibernate更新spring数据jpa中的boolean值

我有spring-data和hibernate配置并运行.我可以使用spring-data保存记录但由于某种原因,我无法运行将更新表中所有布尔字段的查询.

我试过这个:

@Query("update Content v set v.published = false where v.division = :division and v.section = :section")
void unPublishContent(@Param("division") String division, 
                         @Param("section") String section);
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

 @Query("update Content v set v.published = 0 where v.division = :division and v.section = :section")
void unPublishContent(@Param("division") String division, 
                         @Param("section") String section);
Run Code Online (Sandbox Code Playgroud)

参数division和section正在实现,但表中没有变化.

ps我也在使用mysql数据库.

hibernate spring-data spring-data-jpa

38
推荐指数
3
解决办法
4万
查看次数

标签 统计

hibernate ×2

spring-data-jpa ×2

hql ×1

java ×1

spring ×1

spring-data ×1