【发布时间】:2020-01-11 11:54:10
【问题描述】:
我正在按多个参数进行搜索,它们都是可选的。我立刻想到了Criteria API,但这是我开发的一个特殊性。问题是,我需要构建查询的主表是一个不相关的实体:
main_table table1 table2 table3
id_main_table id_table1 id_table2 id_table3
code_table code_table1 code_table2 code_table3
其中code_table 可以包含code_tableN 的任何值
我听说 Criteria API 还不支持不相关的实体。
我正在考虑将WHERE 子句作为字符串参数发送到存储库,如下所示:
@Query(value = "SELECT entity FROM ... WHERE " + where)
List<Entity> findEntitiesByParams(@Param("where") String where);
但这是不可能的。
如果可能的话,我想避免原生查询。
有什么想法吗?非常感谢。
【问题讨论】:
-
所有表的结构都一样?
-
不,只涉及这四个表。
-
他们有不同的列?
-
是的,code_tableN的结构也不同。
-
查询 q = em.createNativeQuery("SELECT a.firstname, a.lastname FROM Author a"); List
标签: java hibernate spring-boot jpa