问题标签 [hibernate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
34286 浏览

java - 休眠删除级联

我有一个实体 [项目],其中包含一组其他实体 [问题]。

我已经用“all-delete-orphan”的级联属性映射了关系。

在我的数据库中,关系映射到问题表上的 project_id (FK) 字段。此字段不能为空,因为我不想要没有项目的问题。

当我这样做时session.delete(project),它会抛出一个异常,说project_idcant be null,但是如果我删除not-null对该字段的约束,则删除效果很好。

任何人都知道如何解决这个问题?

0 投票
9 回答
139377 浏览

java - Hibernate Union 替代方案

使用休眠实现联合查询有哪些替代方法?我知道hibernate目前不支持联合查询,现在我看到的唯一方法是使用视图表。

另一种选择是使用普通的 jdbc,但这样我会丢失我所有的示例/条件查询好东西,以及休眠对表/列执行的休眠映射验证。

0 投票
3 回答
541 浏览

java - 为 O/RM 系统(休眠)实现长期历史模式的最佳实践?

我已经使用 Hibernate 将几个 java 类(如 Customer、Assessment、Rating 等)映射到数据库。现在我正在考虑对持久数据的所有更改的历史模式。该应用程序是一个 Web 应用程序。在删除(或编辑)数据的情况下,另一个用户应该有可能看到更改并撤消它。由于更改超出了当前会话的范围,因此我不知道如何以命令模式之类的方式解决此问题,建议将其用于撤消功能。

对于单值编辑,类似这个问题的方法听起来不错。但是删除整个持久实体呢?最简单的方法是在该客户是否被删除时在表中创建一个标志。最复杂的方法是为存储已删除实体的每个类创建一个表。中间有什么吗?我怎样才能将这两个东西舒适地集成到 O/RM 系统(在我的情况下是 Hibernate)中,而不用过多地使用 SQL(由于可移植性我想避免)并且仍然具有足够的灵活性?

有最佳实践吗?

0 投票
4 回答
1927 浏览

java - 避免 Hibernate LazyInitializationExceptions 的策略

除了使用 OpenSessionInView 模式之外,还有其他方法可以避免 Hibernate Web 应用程序中的 LazyInitializationExceptions 吗?使用 OpenSessionInView 有什么缺点吗?

0 投票
4 回答
27070 浏览

java - 如何使用 Hibernate @Any 相关的注解?

有人可以向我解释任何相关的注释(@Any@AnyMetaDef和)在实践中是如何工作的@AnyMetaDefs@ManyToAny我很难找到关于这些的任何有用的文档(仅 JavaDoc 不是很有帮助)。

到目前为止,我已经收集到它们以某种方式能够引用抽象类和扩展类。如果是这种情况,为什么没有@OneToAny注释?这个“任何”是指一个“任何”还是多个“任何”?

一个简短、实用和说明性的例子将非常感激(不必编译)。

编辑:尽管我想接受答复作为答案并在适当的时候给予信用,但我发现 Smink 和 Sakana 的答案都提供了丰富的信息。因为我不能接受多个回复作为答案,所以很遗憾我将两者都标记为答案。

0 投票
2 回答
953 浏览

java - JPA 关系中列的自定义命名

当我使用 hibernate 与 JPA 建立关系时,会生成一些可怕的长且 ackward 的列名。
例如。我有以下内容actionPlan_actionPlanPK,这意味着该列actionPlan是指向的 FK actionPlanPK
为了使它在数据库中看起来更整洁一点,我希望我可以自己给它一个名称,最好只是它在拥有关系的实体类中的名称。

JPA可以做到这一点吗?

0 投票
7 回答
41148 浏览

java - 非法尝试将集合与两个打开的会话相关联

我正在尝试将 pojo 添加到另一个 pojo 的集合中。我确定我在某个地方犯了一个非常愚蠢的错误,但我不知道如何解决它。

我有一个包含列列表的 pojo LookupTable:

在我的休眠配置中,我有:

在我的 Spring 配置文件中,我有:

最后是我的管理器类(com.foo.LookupTableManager)中所有失败的代码:

这里的变量lookupTableDao 是指一个简单的DAO 类,它扩展了HibernateDaoSupport。

我得到的错误是:

好的,我了解我收到的基本信息。但我不明白的是我在哪里获得第二次会议......有人可以帮助我吗?

我正在使用 Hibernate 3.2.6.ga、Spring 2.5.5 和 Tomcat 6.0

0 投票
2 回答
1506 浏览

java - xdoclet vs xdoclet2?

我正在更新一个旧项目,并且我的 xdoclet 版本在解析 Hibernate (hibernate3) 标签时抱怨我的 Java 1.5 annontations (ArrayList data = ....)。

所以我的问题是这个...

是否有针对 Xdoclet 1.2.3 的修复程序,或者我应该转向 Xdoclet2 吗?

我已经开始移动一些代码,但是 xdoclet2 似乎没有为 hibenate 提供相同级别的配置,例如 excludetags。不过,我可能是错的。

大家怎么看?

杰夫·波特

0 投票
15 回答
182131 浏览

java - 休眠:hbm2ddl.auto=生产中的更新?

在生产环境中运行配置hbm2ddl.auto=update为更新数据库模式的 Hibernate 应用程序是否可以?

0 投票
4 回答
81422 浏览

hibernate - 休眠:检查对象是否存在

假设类型A的对象存储在 DB 中。这是我使用休眠从数据库加载特定的方式:

如果 id=1 的对象不存在,我将得到ObjectNotFoundException。但是有没有办法检查这样的对象是否存在而不必捕获异常?我想要的是:

找不到它休眠文档...