首页 > 解决方案 > Spring data JDBC,我可以在自定义插入查询中将返回值作为实体获取吗?

问题描述

@Repository
public interface RoomRepository extends CrudRepository<RoomEntity, Long> {
    @Override
    List<RoomEntity> findAll();

    @Modifying
    @Query("INSERT INTO room VALUES(:id, :name)")
    RoomEntity insert(@Param("id") String uuid, @Param("name") String name);
}

我进行了插入自定义查询以使用 UUID 的默认键。自定义查询有没有办法将结果值作为实体接收?上面的代码不起作用。框架正在返回一个 int。

标签: springspring-mvcspring-data-jdbc

解决方案


这是直接不可能的。

一些数据库允许执行多个语句:在单个语句中在 java 中执行的多个查询

但是 Spring Data JDBC 的基础设施并没有准备好处理这种情况。

您可以通过首先插入行然后使用或类似机制分两步选择它来创建自定义方法来执行此操作。JdbcTemplate


推荐阅读