【问题标题】:Conversion of Oracle Query to Hibernate queryOracle 查询到 Hibernate 查询的转换
【发布时间】:2014-07-23 20:06:21
【问题描述】:

请帮忙解决这个问题..
我需要计算与 group_id 关联的规则数量。因为我需要count=1的rules_id
规则是休眠映射表。
组是休眠映射表。
ALERT_RULE_GROUP 是一对多的 JoinTable。

给我正确结果的查询:

select rule_id from ALERT_RULE_GROUP where rule_id in(select rule_id from ALERT_RULE_GROUP where GROUP_ID=850) group by rule_id having count(*)=1;

我没有收到 ALERT_RULE_GROUP 未映射..
请帮我把它转换成 HQL..

【问题讨论】:

  • 我认为 hibernate 不做你可能需要加入的子查询。

标签: java sql oracle hibernate hql


【解决方案1】:

您需要先映射 ALERT_RULE_GROUP 在 Hibernate 中表示的关系,然后才能继续。这就是 Hibernate 试图告诉你的。

为此,请在 Role 和 Group 之间添加 ManyToMany 或 OneToMany 或其他任何内容,并使用 @JoinTable(name=ALERT_RULE_GROUP) 注释指定连接表名称。

【讨论】:

  • @OneToMany(fetch=FetchType.EAGER) @JoinTable(name="ALERT_RULE_GROUP", joinColumns={@JoinColumn(name="RULE_ID")}, inverseJoinColumns={@JoinColumn(name="GROUP_ID ") }) private Set groups = new HashSet();
  • Rule.java 中有提到
  • 啊哈。你已经把它映射了。对于那个很抱歉。 Havent 尝试直接查询连接表。在一个单独的实体中再次映射表怎么样:“AlertRuleGroup”。您可以将 id 映射为整数并执行查询。如果你不喜欢这个并且无法查询连接表,为什么不坚持使用 SQL 呢?
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2018-02-28
  • 2015-10-10
  • 2013-02-03
相关资源
最近更新 更多