使用ID JPA搜索其他实体

时间:2016-08-26 14:26:05

标签: java hibernate jpa

我需要一些使用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;

我不知道如何实现它?我可以以某种方式抓住分支实体然后得到它的名字吗?

0 个答案:

没有答案