Val*_*kyi 2 java mysql spring spring-jdbc
我尝试使用句柄查询来更新SQL数据库中的表。
码:
@Autowired
private ProducerRepository producerRepository;
public void update(Producer producer){
String name = producer.getProducerName();
long id = producer.getId();
// producerRepository.save(producer); //this method works well.
producerRepository.update(name, id); //handle attempt - throws exeption in this string
}
Run Code Online (Sandbox Code Playgroud)
生产者资料库:
@Repository
public interface ProducerRepository extends JpaRepository<Producer, Long>{
@Query(nativeQuery = true, value = "UPDATE producer SET producer_name = :pName WHERE id = :id")
Producer update(
@Param("pName") String pName,
@Param("id") long id
);
}
Run Code Online (Sandbox Code Playgroud)
producer实体的所有参数都是正确的,并且producerRepository.save(producer)运作良好。(也是我在控制台name和id字段中-好的)
因此,我可以将其保存producer在数据库中,但是,当我尝试使用update()方法时,会出现错误。
无法使用executeQuery()发出数据操作语句
聚苯乙烯
控制台中的sql查询也可以正常工作
(UPDATE producer SET producer_name = 'some name' WHERE id = ....)
Run Code Online (Sandbox Code Playgroud)
应当注意,存储库中的其他SQL本机查询可以正常工作。因此spring / hibernate / jdbc设置正确。
使用注释@Modifying。
这将触发注释为方法的查询,作为更新查询而不是选择查询。
从2.2.6修改查询 https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html
小智 8
如果上述解决方案不起作用,请使用此
@Modifying
@Transactional
@Query(value ="delete from admindata where user_name = :userName AND group_name = :groupName",nativeQuery = true)
public void deleteadminUser(@Param("userName") String userName,@Param("groupName") String groupName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3056 次 |
| 最近记录: |