Hibernate和Java 8 lambda

irtuqstp  于 2023-08-06  发布在  Java
关注(0)|答案(2)|浏览(134)

自从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);

字符串

iyfjxgzm

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

roejwanj

roejwanj2#

我创建了一个library,它允许您将JPA Criteria API查询编写为lambda表达式-易于读写,类型安全,并且比常规JPA Criteria API短得多。
JPA有它的Criteria API,这是相当难写的,因为有几个你必须使用的对象(RootCriteriaQuery...)。这个库去掉了样板部分,但仍然允许您使用标准化JPA Criteria API的所有功能。
范例:

List<E> entities =  findWhereOrdered(
  (cb, root) -> new PredicateAndOrder(
    cb.equal(root.get(Vendor_.name), name),
    List.of(OrderBy.asc(root.get(Vendor_.id)))));

字符串

相关问题