【发布时间】:2014-04-01 15:18:47
【问题描述】:
我有这样的 JPA 实体类:
@Entity
@Table(name = "person")
public class Person {
@Id
private Long id;
private String lastName;
private String firstName;
private String country;
private String gender;
...
//setters and getters are omitted
}
我需要List<Person> findAll(Person searchCriteria)这样的搜索方法
使用示例:
Person criteria1 = new Person();
criteria1.setFristName("John");
criteria1.setCountry("Usa");
//returns all John from Usa with any lastName
List<Person> searchingResult = findAll(criteria1);
Person criteria2 = new Person();
criteria2.setGender("m");
criteria2.setCountry("Holland");
//returns all man from Holland
List<Person> anotherSearchingResult = findAll(criteria2);
我对 findAll 方法的想法是
String query = "select * from person where ";
if(criteria.getLastName() != null) query+= "last_name = "+ criteria.getLastName();
if(criteria.getGender() != null) query+= "gender = "+ criteria.getGender();
etc
List<Person> = session.execute(query);
但这太丑了,看起来有点开销。
谁能帮我更漂亮地邀请findAll方法?我可以使用任何 Java 技术或框架。
【问题讨论】: