来自 java 对象的 JPA 查询

JPA query from java Object

如何使用 jpa 查询对象(不是实体)?

例如这个简单的代码:

String [] theList = {a,b,c,d}. 
Query q = new Query("Select tl from theList tl")

背后的原因:查询是动态创建和执行的,但是jpql查询的from子句中的对象不一定是映射表。在某些情况下只有一个对象,所以实际需要的行为是在程序执行期间修改查询以满足条件,但我不知道如何修改查询。

编辑:由于代码的可移植性,我不使用本机查询。这将是最后的选择。

您要查找的内容称为 LINQ,不幸的是 (?) 它仅在 C# 中可用。

但是,您可以使用 Stream(s) 部分模拟它。
Stream 基本上提供了您需要的所有运算符

.filter()               where
.max()                  max
.sorted()               orderby
.limit()                limit
.skip()                 offset
.collect(groupingBy())  group by

等等。看看 Javadoc 就知道了!

我认为 'JdbcTemplate' 可以满足您的要求。

JdbcTemplate 使您可以灵活地 运行 本机查询并将它们映射到 Java class。

但是,您必须将 Java class 显式映射到数据库中的列名。

我已经使用 joSQL 解决了。是一个强大的开源工具,允许您使用 "sql" 查询 java 个对象。它不是 jpa,但满足了我的需求。 我见过的另一个工具叫做 querydsl。