java - Java 中的 Lambda - 无法分析 lambda 代码

标签 java jpa lambda

我有一个 Hibernate (JPA) 应用程序,我正在将它与 Jinq 结合使用。我有一个列出实体的表,我希望用户能够过滤它。表中列出了人员。

@Entity
public class Person {
    private String firstName;
    private String surName;
    @Id
    private int id;
    public Person() {
    }
    public Person(final String pFirstName, final String pSurName, final int pID) {
        firstName = pFirstName;
        surName = pSurName;
        id = pID;
    }
    public int getId() {
        return id;
    }
    public void setId(final int pID) {
        id = pID;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(final String pFirstName) {
        return firstName = pFirstName;
    }
    public String getSurName() {
        return surName;
    }
    public void setSurName(final String pSurName) {
        surName = pSurName;
    }
}

我为此使用 JavaFX,但这应该无关紧要。我尝试的第一件事是按姓氏过滤人员。对于过滤,我将 Jinq 与 lambda 结合使用。我的过滤代码如下所示:

private List<Person> getFilteredPersons(final String pSurName){
    JPAJinqStream<Person> stream = streamProvider.streamAll(Person.class);
    stream.where(person -> person.getSurName().contains(pSurName));
    List<Person> filteredList = stream.toList();
    stream.close();
    return filteredList;
}

所以我操作的对象是一个普通的String。我不认为我的 Person 类与此有任何关系。我的第一个想法是,你不能在 lambda 中使用 boolean contains(...) 方法,因为当错误出现时,它说:

Caused by: java.lang.IllegalArgumentException: Could not analyze lambda code

所以我的问题是,是否可以在 lambdacode 中使用字符串的包含方法?

最佳答案

您的问题与 JPA 或 lambda 无关,但与 jinq 有关:它根本不支持将 String.contains() 转换为数据库查询。参见 http://www.jinq.org/docs/queries.html#N65890对于支持的内容。

关于java - Java 中的 Lambda - 无法分析 lambda 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333555/

相关文章:

java - 使用 Select 的 MySQL 和 JDBC PreparedStatement

c# - 如何使用 LINQ 使用条件按子字符串对文件名进行排序?

java - 是否有任何可能有助于理解框架的示例 GUI 和 FEST 代码?

Java - 这个错过的信号解决方案好吗?

java - 如何解决 JPA-CriteriaAPI 的 Java 警告和编译错误?

java - 为什么我通过 JoinTable 进行的 OneToOne 映射不起作用?

java - OpenJPA 1 - 未创建序列表

c# lambda表达式+思考题

c# - 编译表达式树的性能

java - Rally REST WS 查询 : Getting ObjectIDs of One-To-Many children using API v2. 0