Java中的Lambda – 无法分析lambda代码

前端之家收集整理的这篇文章主要介绍了Java中的Lambda – 无法分析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,但这并不重要.我尝试的第一件事是用他们的姓氏过滤人.为了过滤,我使用了金曲与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类与此有任何关系.我的第一个想法是,你不能使用方法boolean contains(…)在lambda中,因为当错误出现时,它说:

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

所以我的问题是,是否可以使用lambdacode中的String的contains-method?

解决方法

你的问题与JPA或lambdas无关,但与jinq有关的一切:它根本不支持将String.contains()转换为数据库查询.有关支持内容,请参阅 http://www.jinq.org/docs/queries.html#N65890.
原文链接:https://www.f2er.com/java/124156.html

猜你在找的Java相关文章