如何使用jpa查询对象(不是实体)?
例如,以下简单代码:
String [] theList = {a,b,c,d}.
Query q = new Query("Select tl from theList tl")
背后的原因:查询是动态创建和执行的,但是jpql查询的from子句中的对象不一定是映射表。在某些情况下,只有一个对象,因此实际需要的行为是在程序执行期间修改查询以符合条件,但是我不知道如何修改查询。
编辑:由于代码的可移植性,我不使用本机查询。这将是最后的选择。
答案 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。