簡體   English   中英

春天如何在包含在對象中的列表上做出選擇語句?

[英]How to make a select statement on a list contained within an object in spring?

您如何在春季創建select語句或過濾嵌套在實體內的列表? 我有一個看起來像這樣的物體...

@Entity
@Table(name = "employee")
public class Employee {

...

    @OneToMany(mappedBy = "_employee", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JsonManagedReference
    Set<Deal> _deals;

    @OneToMany(mappedBy = "_employee", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JsonManagedReference //This is simply to avoid a stackoverflow error according to this link http://stackoverflow.com/questions/3325387/infinite-recursion-with-jackson-json-and-hibernate-jpa-issue
    Set<Recommendation> _recommendations;


    @OneToMany(mappedBy = "_employee", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JsonManagedReference //This is simply to avoid a stackoverflow error according to this link http://stackoverflow.com/questions/3325387/infinite-recursion-with-jackson-json-and-hibernate-jpa-issue
    Set<Event> _events;

  public Employee() {
    }

//getters and setters

....

我為員工提供了一個由服務類訪問的存儲庫。

存儲庫如下所示。

public interface EmployeeRepository extends CrudRepository<Employee, Long> {

    public Employee getEmployeeById(Long _id);

    public Employee getEmployeeBy_username(String username);

}

因此,特別是當我通過其ID獲取一名雇員時,它會返回上述列表。 找回員工時,我需要以某種方式進行選擇語句或過濾器_deals,_recommendations和_events。 這樣只有那些具有boolean屬性_active = true的人才返回。 到目前為止,無論是否有效,都會返回所有交易建議和事件。 如何過濾或從這些列表中僅選擇活動對象?

您幾乎總是為每個查詢選擇一個Entity類型,最好在數據庫中進行過濾。 如果您希望交易,推薦和事件屬於特定的雇員,通常我會將這些方法放在屬於我要加載的實體類型的存儲庫中,如下所示:

@Repository
public interface DealRepository extends JpaRepository<Deal, Long> {

    @Query("select d from Deal d where d.active= true and d.employee.id = :employeeId")
    List<Deal> findActiveDeals(@Param("employeeId") long employeeId);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM