问题标签 [hibernate-annotations]

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 投票
9 回答
66262 浏览

java - 没有@Id的休眠/持久性

我有一个数据库视图,它产生一个没有真正主键的结果集。我想使用 Hibernate/Persistence 将此结果集映射到 Java 对象。当然,因为没有PK,所以不能用@Id.

部署时,Hibernate 抱怨缺少@Id. 我该如何解决这个问题?

0 投票
6 回答
52116 浏览

java - Hibernate 映射包

我正在使用休眠注释。

在我所有的模型类中,我都这样注释:

我的 hibernate.cfg.xml 是

对于我添加到 com.fooPackage 的每个类,我必须在 hibernate.cfg.xml 中添加一行,如下所示:

有没有办法可以添加新的模型类但不需要将此行添加到 hibernate.cfg.xml?

0 投票
1 回答
5108 浏览

java - 使用 Hibernate Annotations 的视图对象的错误 SQL

我正在研究数据库视图的休眠实体映射;当我对它进行条件查询时,hibernate 正在生成错误的 SQL。任何帮助找出我的映射问题的帮助将不胜感激!

我有两个试图从数据库视图中获取的映射实体;该视图没有其他列,只有每个实体的 FK。这些 FK 之一可以被视为主键,因为视图对于每个主实体都有一行。所以我的视图数据库架构如下所示:

请注意,使用该视图是因为我只想选择每个主节点的最新历史记录,而不是所有映射的历史记录。这是我用于视图的对象,带有实体注释:

Primary 和 History 对象都具有完整的工作实体注释。

我的标准设置:

以及(错误的)生成的 SQL:

在编辑项目数据库模式的细节时,我可能搞砸了一些事情,但关键是“选择”子句中的第一个字段是错误的:

this_.primary (view_latest_status_history.primary) 不是一个字段;该字段应称为primary_id。我认为这可能与主字段上的@Id 注释有关?任何想法如何解决这一问题?如果我删除 @Id,我会收到一条错误消息,告诉我该实体没有主键。

更新:

我不再使用连接表表示法将视图映射为字段(如下所示)。注释已修改如下。此解决方案在 HQL 中正常工作,并在启用 hbm2ddl 时生成预期的架构,但我没有使用条件查询重新测试它。

0 投票
3 回答
37397 浏览

java - Hibernate 与同一实体的递归多对多关联

另一个休眠问题...:P

使用 Hibernate 的 Annotations 框架,我有一个User实体。每个人都User可以有一个朋友的集合:一个Collection of other Users。User但是,我无法弄清楚如何在由 s列表组成的类中创建多对多关联User(使用用户朋友中间表)。

这是 User 类及其注释:

用户好友映射表只有两列,都是表列的外uidtbl_users。两列是personId(应该映射到当前用户)和friendId(指定当前用户朋友的 id)。

问题是,“朋友”字段一直显示为空,即使我已经预先填充了朋友表,这样系统中的所有用户都是所有其他用户的朋友。我什至尝试将关系切换为@OneToMany,但它仍然显示为 null (尽管 Hibernate 调试输出显示了一个SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?查询,但没有别的)。

关于如何填充此列表的任何想法?谢谢!

0 投票
2 回答
6071 浏览

hibernate - hibernate @DiscriminatorValue 不适用于关联

我有以下继承层次结构。

当我执行 asession.load(Apple.class,...)时,它会添加FRUIT_TYPE = 'APPLE'到选择查询中。但是,如果我在 FruitBowl(与 Apple 有 1:m 关系)上进行选择,则 Apple 上的选择查询不包含FRUIT_TYPE = 'APPLE'. 为什么会这样?我该如何纠正这个问题?

查询——查询 FruitBowl

--查询水果以检索苹果(fruit_type ='A'的记录)-但不包括该条件

0 投票
3 回答
6583 浏览

reverse-engineering - Hibernate - 将注释从属性(方法)级别移动到字段级别

如何从带有字段级别注释的表中生成休眠域类?我使用了 Hibernate Tools 项目并从数据库中的表中生成了域类。生成的类在 getter 方法上而不是在字段级别上具有注释。请建议一种生成具有注释字段的域类的方法。eclipse/IDEA 等中是否有任何重构工具可用于将注释从方法级别移动到字段级别?

感谢您的帮助和时间。

0 投票
1 回答
1594 浏览

java - 删除重新创建的bean的元素时,休眠级联删除不起作用

假设这些是我的父母和我的孩子对象:

家长:

孩子:

以下伪代码将起作用

  • 创建 ImportTable 的实例,添加 2 列,创建会话,保存,关闭会话;
  • 在不同的会话中读取保存的实例,删除一列;
  • 将其保存在另一个会话中;
  • 检查列数并且等于一。

但以下方法不起作用:

  • 创建 ImportTable 的实例,添加 2 列,创建会话,保存,关闭会话;
  • 在不同的会话中读取保存的实例;
  • 手动重新创建保存的对象;
  • 删除列;
  • 将其保存在另一个会话中;
  • 检查列数并且等于一。

原因是我们有一个 Java 服务器/Flex 客户端应用程序,我们需要加载对象,将其发送给客户端,让客户端做它必须做的任何事情,将对象发送回服务器,然后保存。

我认为当我重新创建对象时,Hibernate 会迷路。据我所知,当从数据库中检索对象时,Hibernate 确实在对象中注入了一些东西。当我重新创建对象时,我不会复制任何不是对象类中声明的字段的内容。这是重新创建对象的代码(用于我的单元测试):

我相信当我重新创建对象时,hibernate 会迷路。我想要hibernate做的是将数据库中的内容与对象中的内容进行比较,并仅保存差异。有没有办法做到这一点?

0 投票
1 回答
1708 浏览

hibernate - 使用 Hibernate Annotations 持久化大文件

我第一次在我的 Web 应用程序中使用 Hibernate Annotations。在我的 bean 中,我应该使用什么类型的注释来持久化用户上传的文件?

0 投票
4 回答
24509 浏览

hibernate - 使用 Hibernate 持续存在长字符串的问题

在我的 Web 应用程序中,我有一个文本区域,其用户填充的内容最终会通过 Hibernate 保存到数据库中。我一直遇到一个问题,当用户输入超过一定长度时,持久性会失败。有没有办法通过 Hibernate Annotations 或在配置中指示此特定字段应支持更长的字符串,并且数据库列类型应反映这一点?

这是我得到的例外:

0 投票
1 回答
1108 浏览

hibernate - @OneToOne 关系是否可以包含 @ForiegnKey 注释

让 @OneToOne 成员包含 @ForiegnKey 注释是否有意义。