JPA - 按周编号获取实体 - Java EE

时间:2014-10-08 09:14:33

标签: java java-ee jpa calendar entity

我有以下实体:

@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和endDate使用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();
}

提前致谢!

1 个答案:

答案 0 :(得分: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