问题标签 [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.
java - 没有@Id的休眠/持久性
我有一个数据库视图,它产生一个没有真正主键的结果集。我想使用 Hibernate/Persistence 将此结果集映射到 Java 对象。当然,因为没有PK,所以不能用@Id
.
部署时,Hibernate 抱怨缺少@Id
. 我该如何解决这个问题?
java - Hibernate 映射包
我正在使用休眠注释。
在我所有的模型类中,我都这样注释:
我的 hibernate.cfg.xml 是
对于我添加到 com.fooPackage 的每个类,我必须在 hibernate.cfg.xml 中添加一行,如下所示:
有没有办法可以添加新的模型类但不需要将此行添加到 hibernate.cfg.xml?
java - 使用 Hibernate Annotations 的视图对象的错误 SQL
我正在研究数据库视图的休眠实体映射;当我对它进行条件查询时,hibernate 正在生成错误的 SQL。任何帮助找出我的映射问题的帮助将不胜感激!
我有两个试图从数据库视图中获取的映射实体;该视图没有其他列,只有每个实体的 FK。这些 FK 之一可以被视为主键,因为视图对于每个主实体都有一行。所以我的视图数据库架构如下所示:
请注意,使用该视图是因为我只想选择每个主节点的最新历史记录,而不是所有映射的历史记录。这是我用于视图的对象,带有实体注释:
Primary 和 History 对象都具有完整的工作实体注释。
我的标准设置:
以及(错误的)生成的 SQL:
在编辑项目数据库模式的细节时,我可能搞砸了一些事情,但关键是“选择”子句中的第一个字段是错误的:
this_.primary (view_latest_status_history.primary) 不是一个字段;该字段应称为primary_id。我认为这可能与主字段上的@Id 注释有关?任何想法如何解决这一问题?如果我删除 @Id,我会收到一条错误消息,告诉我该实体没有主键。
更新:
我不再使用连接表表示法将视图映射为字段(如下所示)。注释已修改如下。此解决方案在 HQL 中正常工作,并在启用 hbm2ddl 时生成预期的架构,但我没有使用条件查询重新测试它。
java - Hibernate 与同一实体的递归多对多关联
另一个休眠问题...:P
使用 Hibernate 的 Annotations 框架,我有一个User
实体。每个人都User
可以有一个朋友的集合:一个Collection of other User
s。User
但是,我无法弄清楚如何在由 s列表组成的类中创建多对多关联User
(使用用户朋友中间表)。
这是 User 类及其注释:
用户好友映射表只有两列,都是表列的外uid
键tbl_users
。两列是personId
(应该映射到当前用户)和friendId
(指定当前用户朋友的 id)。
问题是,“朋友”字段一直显示为空,即使我已经预先填充了朋友表,这样系统中的所有用户都是所有其他用户的朋友。我什至尝试将关系切换为@OneToMany
,但它仍然显示为 null (尽管 Hibernate 调试输出显示了一个SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?
查询,但没有别的)。
关于如何填充此列表的任何想法?谢谢!
hibernate - hibernate @DiscriminatorValue 不适用于关联
我有以下继承层次结构。
当我执行 asession.load(Apple.class,...)
时,它会添加FRUIT_TYPE = 'APPLE'
到选择查询中。但是,如果我在 FruitBowl(与 Apple 有 1:m 关系)上进行选择,则 Apple 上的选择查询不包含FRUIT_TYPE = 'APPLE'
. 为什么会这样?我该如何纠正这个问题?
查询——查询 FruitBowl
--查询水果以检索苹果(fruit_type ='A'的记录)-但不包括该条件
reverse-engineering - Hibernate - 将注释从属性(方法)级别移动到字段级别
如何从带有字段级别注释的表中生成休眠域类?我使用了 Hibernate Tools 项目并从数据库中的表中生成了域类。生成的类在 getter 方法上而不是在字段级别上具有注释。请建议一种生成具有注释字段的域类的方法。eclipse/IDEA 等中是否有任何重构工具可用于将注释从方法级别移动到字段级别?
感谢您的帮助和时间。
java - 删除重新创建的bean的元素时,休眠级联删除不起作用
假设这些是我的父母和我的孩子对象:
家长:
孩子:
以下伪代码将起作用
- 创建 ImportTable 的实例,添加 2 列,创建会话,保存,关闭会话;
- 在不同的会话中读取保存的实例,删除一列;
- 将其保存在另一个会话中;
- 检查列数并且等于一。
但以下方法不起作用:
- 创建 ImportTable 的实例,添加 2 列,创建会话,保存,关闭会话;
- 在不同的会话中读取保存的实例;
- 手动重新创建保存的对象;
- 删除列;
- 将其保存在另一个会话中;
- 检查列数并且等于一。
原因是我们有一个 Java 服务器/Flex 客户端应用程序,我们需要加载对象,将其发送给客户端,让客户端做它必须做的任何事情,将对象发送回服务器,然后保存。
我认为当我重新创建对象时,Hibernate 会迷路。据我所知,当从数据库中检索对象时,Hibernate 确实在对象中注入了一些东西。当我重新创建对象时,我不会复制任何不是对象类中声明的字段的内容。这是重新创建对象的代码(用于我的单元测试):
我相信当我重新创建对象时,hibernate 会迷路。我想要hibernate做的是将数据库中的内容与对象中的内容进行比较,并仅保存差异。有没有办法做到这一点?
hibernate - 使用 Hibernate Annotations 持久化大文件
我第一次在我的 Web 应用程序中使用 Hibernate Annotations。在我的 bean 中,我应该使用什么类型的注释来持久化用户上传的文件?
hibernate - 使用 Hibernate 持续存在长字符串的问题
在我的 Web 应用程序中,我有一个文本区域,其用户填充的内容最终会通过 Hibernate 保存到数据库中。我一直遇到一个问题,当用户输入超过一定长度时,持久性会失败。有没有办法通过 Hibernate Annotations 或在配置中指示此特定字段应支持更长的字符串,并且数据库列类型应反映这一点?
这是我得到的例外:
hibernate - @OneToOne 关系是否可以包含 @ForiegnKey 注释
让 @OneToOne 成员包含 @ForiegnKey 注释是否有意义。