猿问

休眠联盟替代品

使用冬眠实现联合查询,我必须采取什么替代方法?我知道休眠状态目前不支持联合查询,现在我看到的建立联合的唯一方法是使用视图表。

另一个选择是使用普通的jdbc,但是这样一来,我将失去所有示例/条件查询的功能,以及hibernate对表/列执行的hibernate映射验证。


明月笑刀无情
浏览 299回答 3
3回答

慕森王

使用VIEW。可以使用实体名称将相同的类映射到不同的表/视图,因此您几乎不需要重复。在那里,这样做就可以了。普通的JDBC还有另一个隐藏的问题:它不知道Hibernate会话缓存,因此,如果在事务结束之前缓存了某些内容,并且没有从Hibernate会话中清除该内容,则JDBC查询将找不到它。有时候可能会很令人困惑。

守着星空守着你

我必须同意弗拉基米尔。我也考虑在HQL中使用UNION,但找不到解决方法。奇怪的是,我发现(在Hibernate FAQ中)不支持UNION,与UNION有关的错误报告标记为“已修复”,新闻组的人说该声明将在UNION处被截断,其他新闻组的人则说它有效很好...经过一天的沉思,我最终将HQL移植回普通的SQL,但是在数据库的View中进行操作是个不错的选择。就我而言,部分查询是动态生成的,因此我不得不在代码中构建SQL。
随时随地看视频慕课网APP

相关分类

Java
我要回答