创建没有实体的弹簧存储库

2022-09-01 04:33:11

我想使用spring数据存储库接口来执行本机查询 - 我认为这种方式是最简单的,因为复杂性低。

但是在扩展接口时 我需要写 T - 我的实体,这不可用。CrudRepository<T, ID>

我的本机查询不返回任何具体的实体,那么在没有实体的情况下创建spring存储库的最佳方法是什么?


答案 1

CrudRepository或者不是为没有一对而工作而设计的。JpaRepository<Entity,ID>

您最好创建自定义存储库,注入实体管理器并从那里进行查询:

  @Repository
  public class CustomNativeRepositoryImpl implements CustomNativeRepository {

    @Autowired
    private EntityManager entityManager;

    @Override
    public Object runNativeQuery() {
        entityManager.createNativeQuery("myNativeQuery")
         .getSingleResult();
    }
}

答案 2

目前,JPA 中没有仅使用本机或 JPQL/HQL 查询(使用@Query表示法)创建存储库的功能。要解决此问题,您可以创建一个虚拟对象以插入到扩展界面中,如下所示:

@Entity
public class RootEntity {
    @Id
    private Integer id;
}

@Repository
public interface Repository extends JpaRepository<RootEntity, Integer> {
}

推荐