问题标签 [hbm]
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.
c# - 如何让 NHibernate 返回复合键表上的数据?
我的数据库中有一个联结表。我需要读取 id 值并在我的程序中使用它们。我无法让 NHibernate 返回数据库中的任何记录。看起来好像我的映射文件“编译”了,但没有返回任何结果。
链接表
- int id_ObjectA (外键)
- int id_ObjectB (外键)
LinkDAO 类:
映射文件“LinkDAO.hbm.xml”:
我这样查询:
问题: 当表仅包含复合键时,如何将两列读取为 int 值?(引用实际对象会很有用,但 int id 就足够了)
java - Hibernate:composite-id 与 key-many-to-one 生成 java.lang.stackoverflow 错误
我一直在尝试使用 hbm 文件将下表映射到 Hibernate:
如您所见,它们都共享相同的 2 字段主键 - 反过来,这也是从 additional_info 到 info 的外键。
这是 hibernateTools 定义关系的方式(additional_info hbm):
在 info 的 hbm 中:
使用这种方法,我不断收到java.lang.stackoverflow错误。我一直在搜索和尝试不同的映射/替代组合,但没有成功——因为我没有太多的休眠经验,它更像是疯狂的猜测(现在大多数人都在使用注释)。有些人建议使用<id>
,<generator>
但我找不到一个示例,其中两个字段用于链接一对一关系,既是 PK 又是 FK。
我的类都是可序列化的,并且也自动生成了 equals 和 hashCode 方法。
我也不明白为什么“键多对一”。这应该是一对一的关系。我读到将composite-id 与此键多对一结合使用不是一个好主意,但我未能实现可行的替代方案。
任何见解将不胜感激。
非常感谢!
PS:一段堆栈跟踪:
java - Hibernate - 更新表中的主键“id”列
在我的 Java 应用程序中,我使用休眠 .hbm 文件来访问数据库;这是否可以更新表中的主键“id”列?我的 .hbm 文件中的“id”列如下:
java - 在外键上一对一休眠
我有一个主表 D1,它的唯一 ID 为 d1Id。d1Id 唯一标识 D1 记录,也是表的主键。我有表 2,它是 D2,它有一个 d2seq 作为主键,但 D2 也有 d1Id,它是唯一的,它在 D1 上有一个外键约束(我认为)。但我确定它是独一无二的,并且 id 是相同的。当我使用休眠进行 D1 调用时,我试图检索 d2 值,但由于出现编译时错误,我无法为其获取正确的 hbm。
问题的底线是,我需要在 2 个表之间建立一对一的关系,其中在第二个表中,连接的 id 不是表的主键。我在谷歌上看到的所有示例都有第二个表上的 ID 也是第二个表的主键的情况。让我向您展示我现在拥有的 HBM 文件。
在 D2 的第二个 hbm 中,我被困在这里
我显然不能在这里为 d1id 使用第二个 id 字段,因为 1> 它不是主键,并且 2> 我以前已经使用过它。那么我的 HBM 文件应该如何用于此操作?
同样,一旦我的 HBM 就位,我想在通过 DTO 查询 D1 时获取 D2 信息。我怎样才能做到这一点?
hibernate - 我应该使用什么休眠参数?
我有一个 DEVICE 表,它的唯一 ID 为 DEVICEID。我有第二个名为 DEVICEINFO 的表,其主键是序列 DEVICEINFOSEQ,但此信息表还有一个 DEVICEID 字段,它是指向 DEVICE 的外键。在 DEVICE HBM 我有以下关于 deviceinfo
我的设备信息hbm如下
一个设备在 Deviceinfo 表中只有 1 个条目,但一个设备根本不需要有一个条目。并非所有设备都有设备信息。但如果信息存在,我们必须检索它。该信息是从另一个来源更新的,如果可能的话,这个 HBM 实际上应该阻止任何更新。多对一正确吗?也许我应该使用一对多?
如果我使用上面的 HBM,我会得到
org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行查询;SQL
hibernate - Hibernate Hbm 多对多映射 - 如果多对多表中不存在关系,则删除另一部分?
我想知道是否有办法配置 hbm 映射来做这样的事情:当我删除多对多关系的所有者时,在删除多对多表中的子项后,也删除实体如果他们都在多对多表中没有更多的孩子,则在关系的另一部分。
我尝试使用所有者一侧的属性 cascade=all 来做这样的事情,但这样总是删除另一部分,在多对多表中是否有其他更多寄存器。
hibernate - 重用 HQL 命名查询片段
我正在使用 HQL 命名查询(在 XML 文件中定义)来使用 Hibernate 查询我的数据库。有些查询非常复杂,我发现自己将一个查询的大部分内容复制粘贴到另一个类似的查询中。
我想知道是否有可能在“命名查询片段”中定义公共部分并在我的所有查询中重用该片段?
顺便说一句,我不想使用条件 API,因为我觉得用 XML 编写查询更舒服。其中一些已经是一个怪物,使用 API 实现它们会使它们更加不可读。
hibernate - Hibernate:使用带有 EJB3 注释的 java 类生成 hbm.xmls
我需要使用带有 EJB3 注释的 java 类创建 Hibernate XML 映射文件。我使用Eclipse Java EE IDE下的 Hibernate Tools for Web Developers Juno Service Release 2 。用于创建一个 Hibernate XML Mapping 文件,如本文所述 但我有同样的问题(在那篇文章中指出):EJB3 注释将被忽略。
如果我有以下 POJO:
然后会生成下面的mapper
非常感谢您的回答!
unit-testing - 单元测试 nHibernate 映射
我正在使用 HBM 文件在 nHibernate 中映射一些表值函数。我们的表函数最近发生了很大变化,所以我想确保在进行这些更改时更新我们的映射文件。我可以通过运行加载 HBM 查询、添加参数并执行查询的函数来对映射文件进行单元测试。如果我的映射文件有一个额外的列、拼写错误的列或错误的数据类型,我就知道出了点问题,因为查询将失败。
但是,如果表值函数包含我的映射文件没有的新列,则查询不会失败?有什么办法可以将它添加到我的测试中?
nhibernate - 另一个 NHibernate 映射之谜!获取 hbm 文件中的计数
我正在尝试检索分配给我的 hbm 文件中容器的项目数。我已经进行了一些挖掘并设法让我的 hbm 代码到此为止(如下!)。我希望每次查询容器对象时都检索计数。我可以使用拦截器,但我认为有更好的方法。我是在正确的轨道上还是应该使用不同的策略来加载计数?
谢谢。
PS 我们使用的是 NH v2.2