自从Java 8引入以来,Hibernate是否在等待一些变化?特别1.有没有办法在Hibernate中用lambdas写查询?(例如.net Linq-to-SQL风格)1.如果没有,当它来(如果它计划来)。例如像这样的东西:
User u1 = dbo.Users.firstOrDefault(f -> f.userId = 10); List<User> users = dbo.Users.selectMany(w -> w.userId > 5);
字符串
iyfjxgzm1#
我也认为这是不可能的。但我看到Jinq http://www.jinq.org/他们为原始SQL查询做了这件事。
database.customerStream().where( customer -> customer.getName().equals("Alice"));
字符串所以我认为这取决于某人实现Jinq中用于JPA实体的相同类型的逻辑,并生成JPQL查询。
**更新:**他们也为JPA做了这件事。http://www.jinq.org/docs/gettingstartedjpa.html的
roejwanj2#
我创建了一个library,它允许您将JPA Criteria API查询编写为lambda表达式-易于读写,类型安全,并且比常规JPA Criteria API短得多。JPA有它的Criteria API,这是相当难写的,因为有几个你必须使用的对象(Root,CriteriaQuery...)。这个库去掉了样板部分,但仍然允许您使用标准化JPA Criteria API的所有功能。范例:
Root
CriteriaQuery
List<E> entities = findWhereOrdered( (cb, root) -> new PredicateAndOrder( cb.equal(root.get(Vendor_.name), name), List.of(OrderBy.asc(root.get(Vendor_.id)))));
2条答案
按热度按时间iyfjxgzm1#
我也认为这是不可能的。但我看到Jinq http://www.jinq.org/他们为原始SQL查询做了这件事。
字符串
所以我认为这取决于某人实现Jinq中用于JPA实体的相同类型的逻辑,并生成JPQL查询。
**更新:**他们也为JPA做了这件事。http://www.jinq.org/docs/gettingstartedjpa.html的
roejwanj2#
我创建了一个library,它允许您将JPA Criteria API查询编写为lambda表达式-易于读写,类型安全,并且比常规JPA Criteria API短得多。
JPA有它的Criteria API,这是相当难写的,因为有几个你必须使用的对象(
Root
,CriteriaQuery
...)。这个库去掉了样板部分,但仍然允许您使用标准化JPA Criteria API的所有功能。范例:
字符串