来自Java对象的JPA查询

时间:2019-02-27 19:41:12

标签: java sql jpa eclipselink jpql

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

例如,以下简单代码:

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

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

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

3 个答案:

答案 0 :(得分:1)

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

但是,您可以使用Stream来部分模拟它。
Stream基本上可以提供您需要的所有操作员

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

以此类推。只需看看Javadoc!

答案 1 :(得分:0)

我认为“ JdbcTemplate”足以满足您的要求。

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

但是,您必须使用数据库中的列名显式映射Java类。

答案 2 :(得分:0)

我已经使用joSQL解决了。是一款功能强大的开源工具,可让您使用“ sql”查询java对象。不是jpa,但满足了我的需求。 我见过的另一种工具称为querydsl。