Tôi đã có một ứng dụng với Hibernate (JPA) mà tôi đang sử dụng kết hợp với Jinq. Tôi có một bảng liệt kê các thực thể và tôi muốn người dùng có thể lọc nó. Trong bảng có những người được liệt kê.Lambda trong Java - Không thể phân tích mã lambda
@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;
}
}
Tôi đang sử dụng JavaFX cho việc này, nhưng điều này không quan trọng. Điều đầu tiên tôi cố gắng là lọc họ bằng tên họ của họ. Để lọc, tôi đã sử dụng Jinq kết hợp với lambda. Mã lọc của tôi trông giống như sau:
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;
}
Vì vậy, đối tượng tôi đang hoạt động là một chuỗi bình thường. Tôi không nghĩ rằng lớp học của tôi có liên quan đến điều đó. Suy nghĩ đầu tiên của tôi là, rằng bạn không thể sử dụng phương pháp boolean contains(...)
trong lambda vì khi lỗi xuất hiện, nó nói:
Caused by: java.lang.IllegalArgumentException: Could not analyze lambda code
Vì vậy, câu hỏi của tôi là, nó là bằng cách nào đó có thể sử dụng chứa-method của một Chuỗi trong lambdacode?
Cảm ơn, điều đó đã làm cho tôi :) có bạn có ý tưởng làm thế nào tôi có thể nhận ra nó sau đó nhưng vẫn sử dụng jinq? – Basti
Nếu bạn tiếp tục đọc tài liệu, nó nói về jpql.like –