【发布时间】:2021-10-16 19:22:09
【问题描述】:
我们正在使用 Spring Data JPA + Hibernate 方法来实现。
对于带有连接的复杂查询,我们创建了一个通用映射 xml,我们在其中定义这些查询。
我们不会为这些复杂的查询创建每个实体类。
我们如何使用 JPARepository 并执行这些查询?
有什么办法吗?以下是用 orm.xml 编写的查询之一:
SELECT FMT_NAME( pers.id ) AS customer_name, first_name, mid_name,
last_name,
addr.line_1_addr,
addr.line_2_addr,
RTRIM( LTRIM( addr.city_name || ', ' || addr.state_code || ' ' ||
addr.zip_code_num, ', ') || '-' || addr.zip_code_suffix, '-' ) AS line_3_addr
FROM pers, (SELECT pers_addr.pers_id ,
addr.line_1_addr, addr.line_2_addr,
addr.city_name, addr.state_code,
addr.zip_code_num, addr.zip_code_suffix
FROM pers_addr, addr WHERE addr.id = pers_addr.addr_id
AND TRUNC(SYSDATE) BETWEEN pers_addr.beg_date AND pers_addr.end_date
AND pers_addr.type_code = 'ML'
) addr WHERE pers.id = ? AND pers.id = addr.PERS_ID
【问题讨论】:
-
你有对应Repository的Entity吗?
-
不,我们不必创建这么多实体类,所以尝试遵循xml的方法。
-
据我所知,你不能在没有实体的情况下使用 JpaRepository,所以你可以试试这个:stackoverflow.com/questions/60871898/… 或者你可以使用 @Repository 注释创建一个类,但要进行查询,你必须使用实体管理器(这里是一个例子)stackoverflow.com/questions/55513776/…
-
澄清一下,JpaRepository 它只是一个接口,提供了一些杂物。不多不少。因此,如果没有实体,您将无法使用该接口,因为该接口需要那些信息(实体和 id 类型)
标签: spring-data-jpa