是否可以在Spring JPA中使用Lambda表达式?

b09cbbtk  于 2023-08-02  发布在  Spring
关注(0)|答案(2)|浏览(246)

我是一名C#开发者,正在学习Java。在C#中,我使用lambda表达式创建所有查询,并将表达式注入nHibernate会话。我的签名是Expression<Func<T, bool>>该表达式基于通用实体(T),并执行boolean条件。

var results = repo.find(t => t.property1 == something && t.property2 == somethingElse);

字符串
我一直在搜索JPA,直到我疯了,试图弄清楚如何在JPA/Spring中做到这一点。
我无法在JPA中重现。我错过了什么吗?这不是JPA中的一个功能吗?
此外,JPA似乎是在DTO上设置的,我发现很少支持处理语法上不等同于数据表的业务对象。(我已经很多年没有写过DTO了,作为一个C#程序员。Fluent.nHibernate通过将业务对象Map到数据库格式来提取DTO流程。)

wwodge7n

wwodge7n1#

不完全相同的C#与nHibernate甚至LINQ。
但是如果你使用的是Spring Data JPA,你可以使用Specifications中的Criteria API。
文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications

mgdq6dx1

mgdq6dx12#

我创建了一个library,它允许您将JPA查询编写为lambda表达式-易于读写,类型安全,比常规的JPA Criteria API短得多。它甚至支持分页。
示例如下:

List<E> entities = findWhere(
(cb, root) -> cb.and(
    cb.equal(root.join(Car_.model).get(CarModel_.vendor), vendor),
    cb.equal(root.get(Car_.color), color))

字符串

相关问题