2014-10-08 56 views
0

我有以下實體:JPA - 獲得實體的週數 - 的Java EE

@Entity 
@Table(name = "foo") 
public class Foo { 

    @GeneratedValue 
    @Id 
    private int id; 


    @Temporal(TemporalType.DATE) 
    private Date startDate; 

    @Temporal(TemporalType.DATE) 
    private Date endDate; 

    /** getters and setters **/ 
} 

所以我使用的startDate和結束日期類型Temporal.DATE。現在我想按年份和星期數來選擇。做這個的最好方式是什麼?我更喜歡JPQL查詢。

例如

@Stateless 
public class FooBean { 
    @Inject 
    @MainDB 
    EntityManager em; 

public List<Foo> getFoos(int weekNumber, int year) { 
    TypedQuery<Foo> foos = em.createQuery("...", Foo.class); 
    return foos.getResultList(); 
} 

提前感謝!

+0

嘿,我有一個類似的要求了。你有沒有找到解決方案? – DrkStr 2017-11-21 05:12:09

回答

3

您可以創建這樣一個日期:

Calendar calendar = Calendar.getInstance(); 
calendar.clear(); 
calendar.set(Calendar.WEEK_OF_YEAR, week); 
calendar.set(Calendar.YEAR, year); 

Date date = calendar.getTime();//first day of week 

然後使用查詢像

:date BETWEEN f.startDate AND f.endDate