我有一个应用程序与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?