我是一名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流程。)
2条答案
按热度按时间wwodge7n1#
不完全相同的C#与nHibernate甚至LINQ。
但是如果你使用的是Spring Data JPA,你可以使用Specifications中的Criteria API。
文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications
mgdq6dx12#
我创建了一个library,它允许您将JPA查询编写为lambda表达式-易于读写,类型安全,比常规的JPA Criteria API短得多。它甚至支持分页。
示例如下:
字符串