2017-09-08 4 views
2

私は春のリポジトリ@queryは

@Transactional 
@Modifying(clearAutomatically = true) 
@Query("UPDATE Order co SET co.orderStatus =:status WHERE co.orderStatus =:newStatus") 
int updateOrderStatus(@Param("status") OrderStatus status, @Param("newStatus") OrderStatus newStatus); 

でカスタムメソッドを作成し、サービスにそれを呼び出す:

log.info("started"); 
int i = orderRepository.updateOrderStatus(OrderStatus.CREATED, OrderStatus.PENDING); 
log.info("updates: " + i); 

そして私は、ログに次を参照してください。

INF 15:43:45.102 started
INF 15:43:46.0​​35更新:0

DBには、私はCREATEDステータスの3つの行を持っています。私は間違っていて行は更新されていません。

@Column(name = "order_status") 
@Enumerated(EnumType.STRING) 
private OrderStatus orderStatus; 

findAllByOrderStatus(OrderStatus.CREATED) get 3 rows 

答えて

2

あなたのクエリは、他の方法で回避され:

@Transactional 
    @Modifying(clearAutomatically = true) 
    @Query("UPDATE Order co SET co.orderStatus =:newStatus WHERE co.orderStatus =:status") 
    int updateOrderStatus(@Param("status") OrderStatus status, @Param("newStatus") OrderStatus newStatus); 
+0

ばかげた間違い(((((((((((((((((((ありがとう – user5620472

+0

あなたがしています!ようこそ、それは起こる;) –