4

たとえば、次のServiceエンティティ があります。

@OneToMany(fetch = FetchType.EAGER, mappedBy = "service")
public List<ServiceStatus> getServiceStatuses() {
    return serviceStatuses;
}

およびServiceStatusエンティティ:

@ManyToOne
@JoinColumn(name = "service", nullable = false)
public Service getService() {
    return service;
}

@Column(name = "date", nullable = false)
@Temporal(TemporalType.DATE)
public Date getDate() {
    return date;
}

Serviceここで、すべてのオブジェクトを照会して、それぞれがと の間にあるServiceStatusオブジェクトのみを持つようにする必要があります。つまり、適切な日付のオブジェクトが 10 個ある場合、リストにはそれらの 10 個のオブジェクトのみが含まれ、それ以上は含まれません。出来ますか?ServiceStatus.datedate1date2ServiceStatusserviceStatuses

前もって感謝します。

4

5 に答える 5

8

@Where次の句を使用できます。

@OneToMany(fetch = FetchType.EAGER, mappedBy = "service")
@Where(clause = "is_deleted = 'N'")
List<ServiceStatus> serviceStatuses = new ArrayList<ServiceStatus>();

上記の実装により、 であるレコードをフィルタリングできますis_deleted = N。同様に、独自の実装を作成できます。

于 2012-09-11T08:07:33.027 に答える
1

@Filter を使用して問題を解決しました。

@FilterDef(name = "dateFilter", parameters = {
        @ParamDef(name = "date1", type = "date"),
        @ParamDef(name = "date2", type = "date") })
@Filter(name = "dateFilter", condition = "date >= :date1 and date <= :date2")

そしてそれをセッションに適用します:

session.enableFilter("dateFilter")
                .setParameter("date1", date1)
                .setParameter("date2", date2);

ところで、Hibernate を使用する場合、クエリには何を使用する必要がありますか?この場合、独自のメカニズムまたは「内部結合」のような「生の」SQL ですか?

于 2012-09-11T09:23:25.487 に答える
0
Criteria criteria = session.createCriteria(Service.class);
if(date1!=null){
    criteria.add(Expression.ge("serviceStatuses.date1",date1));
}
if(date2!=null){
    criteria.add(Expression.le("serviceStatuses.date2",date2));
}
return criteria.list();

とった?

于 2012-09-11T10:52:41.040 に答える
0

クエリ中に Restrictions.le("date2",date2) および Restrictions.gt("date1",date1) を使用できます。このリンクを参照してください。

http://www.mkyong.com/hibernate/hibernate-criteria-examples/

以下も非常に便利です

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

于 2012-09-11T08:10:29.213 に答える
0

この場合、HQL を使用してクエリを作成できます。

http://www.mkyong.com/hibernate/hibernate-query-examples-hql/

于 2012-09-11T08:11:07.527 に答える