当前位置: 首页 > 面试题库 >

Hibernate:使用一对多限制查询

壤驷华美
2023-03-14
问题内容

例如,我有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对象仅ServiceStatus.date具有介于date1和之间的那些对象date2。也就是说,如果有10个ServiceStatus具有正确日期的对象,则serviceStatuses列表将仅包含那10个对象,仅此而已。可能吗?

提前致谢。


问题答案:

我使用@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(例如“内部联接”)?



 类似资料:
  • 我想使用联接表在两个表之间建立一对多关系。 这就是为什么我想使用联接表: Hibernate单向一对多关联-为什么连接表更好 最后,我想使用Hibernate注释来执行此操作。 我找到了一些使用xml映射实现这一点的示例,但没有使用注释。 我相信这将是如何创建表需要

  • 问题内容: 我有如下表 如何通过下面的AND组合成一个IN语句来使用Restriction.in查询? 问题答案: 我认为这是您要使用的条件组合(顺便说一句,帮助Hibernate实体bean定义而不是表结构更容易):

  • 问题内容: 我已经看到人们使用多对一映射来表示一对一关系。我也在加文·金(Gavin King)的书和文章中阅读了此内容。 例如,如果一个客户可以只有一个送货地址,而一个送货地址只能属于一个顾客,则映射为: 这本书的原因是(引用): “您不在乎关联目标方面的内容,因此您可以将其视为 一对一的 关联,而无需涉及 很多 部分。” 我的问题是,为什么不使用?什么使a成为不那么理想的选择? 谢谢。 问题答

  • 我有一个班级评语: 保留comment类可以工作,但以下条件查询是有效的: 抛出org.hibernate.exception.DataException:未为参数%1指定值。 这是生成的查询: 选择this_.comment_id作为comment1_0_0_,this_.comment_id作为comment0_0_,commenttop2_.comment_id作为comment1_0_2_

  • 我有一个需要在多个地方使用的实体类。所以我创建了一个如下的泛型类 我还有另外两个类正在使用这个类 另一个使用输出的类