我需要一些使用JPA进行搜索的帮助。我为所有实体提供了1个搜索功能,我需要对其进行修改以满足我的新需求。
我有以下实体客户:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Client {
@Id
private Long clientID
private String firstName;
private String lastName;
@Enumerated(EnumType.STRING)
private Gender gender;
private Long branchID;
....
我有一个像这样的搜索功能:
public String buildQuery(String orderByColumnID, String orderByASC, List<SearchModel> filters, Object classObject) {
if (orderByColumnID == null) {
orderByColumnID = "creationDate";
orderByASC = "DESC";
}
String queryString = "SELECT l from " + classObject.getClass().getSimpleName() + " l ";
String additionalString = null;
if (filters.size() > 0) {
for (int i = 0; i < filters.size(); i++) {
if (i == 0) {
additionalString = "where l." + filters.get(i).getKey() + " LIKE " + "'%" + filters.get(i).getValue() + "%'";
} else {
additionalString = additionalString + " and l." + filters.get(i).getKey() + " LIKE " + "'%" + filters.get(i).getValue() + "%'";
}
}
additionalString = additionalString + " order by l." + orderByColumnID + " " + orderByASC;
} else {
additionalString = " order by l." + orderByColumnID + " " + orderByASC;
}
System.out.println(queryString + additionalString);
return queryString + additionalString;
}
public PaginationResult search(String queryString, int page, int count) {
PaginationResult result = new PaginationResult();
Query query = em.createQuery(queryString);
result.setMaxResults((long) query.getResultList().size());
query.setFirstResult(page * count - count);
query.setMaxResults(count);
result.setData(query.getResultList());
return result;
}
我希望能够使用branchID搜索客户端,但在结果中我想要接收分支名称而不是ID
这是我的分支实体
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Branch {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String branchID;
private String branchName;
我不知道如何实现它?我可以以某种方式抓住分支实体然后得到它的名字吗?