问题标签 [hibernate-mapping]

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 投票
1 回答
572 浏览

java - Hibernate、设置键、CompositeUserType 和 SQL 过程

我在使用 Hibernate 和自定义 CompositeUserType 键将非空 Set 返回到对象时遇到了一些麻烦。

我有一组表和视图(此处简化):

和数据库功能:

所以要使用我必须实现的那些函数来完成这个映射,CompositeUserType所以现在我有这样的 Java 类:

我想要一个或一组作者。但无法弄清楚如何将这部分映射到 *.hbm.xml 文件中。它目前看起来像这样:

但是当我session.load(Article.class, pk)在一篇我知道有作者的文章上运行它时,我得到的 Set size 为零。否则我使用 Hibernate 插入、更新、删除没有问题,但现在我很难过。在我看来,这表明我的 ArticleLangPKType 存在问题。

有什么想法可以完成这个吗?为什么我的 Set 总是大小为 0?我将如何使用提供的文章集和 SQL 过程保存作者?Hibernate 适合我吗?我需要休息一下才能看清楚吗?

提前致谢!

0 投票
1 回答
507 浏览

java - 使用中间表管理双向关系的 Hibernate 映射

我有一个对象层次结构如下。

当事人 > 继承者 > 组织和人员组织 > 继承者 > 客户、供应商人员 > 继承者 > 联系人

在数据库中,我有以下表格Party、Customer、Vendor、Contact。它们在 Party 表中都有对应的行。

联系人属于供应商或客户。我在 org_party_id 的联系人表上有一个字段。但是,由于组织可以是客户或供应商,我需要能够查看不同的表。

有没有办法在休眠中映射它?或者,在 DB/hibernate 中管理它的更好方法?

0 投票
2 回答
2087 浏览

database - 如何在 grails 域类中调整 Map 的约束/数据库映射

以下 grails 域类:

现在对于 myMap,grails 会自动为地图中的元素创建一个新表。但是,如果我添加了太长的元素(例如 1024 个字符),则会出现数据库错误。

我可以以某种方式告诉 grails 使 myMap 表中的相应列足够大以允许更大的字符串,还是我必须在数据库中手动执行此操作?

我已经试过了

这不起作用(正如预期的那样,因为 maxSize 应该引用 Map 的值而不是 Map 本身)。

如果不是通过约束,也许有办法通过

?

0 投票
1 回答
2402 浏览

hibernate - Hibernate:OneToMany 映射不基于 PK?

我有 2 个实体/表。

一个是适当的实体,我们称之为data。它有许多包含所谓“多语言代码”的字段。

第二个表code包含多语言值本身。

这是一些示例数据:

我想将数据实体中的属性大洲、国家等映射为地图,如下所示:

这样我就可以像这样阅读正确语言的文本:

我还需要能够使用用户的语言对这些“代码”的值进行文本搜索。(例如,在法语中获取 country='suisse' 的所有数据!)

那么,是否可以OneToMany使用不是当前实体主键的键字段来映射集合?我需要我的大洲集合“代码表中的所有记录,其中代码 = 我的continentCode财产的价值”。或者也许有更合适的方式来表示这种关系?

注意:不幸的是,我无法更改 SQL 架构...

0 投票
3 回答
14577 浏览

java - Hibernate中bag标签有什么用?

我需要知道如何使用行李牌以及它的用途是什么?

0 投票
3 回答
19720 浏览

java - postgres串行/大串行列的正确休眠ID生成器?

我的 PostgreSQL 表的 id 类型为bigserial,这意味着它们是在插入行时生成的(因此,INSERT语句中未提供 id 列的值)。我很难<generator class="...">在我的 XML 映射文件中找到该属性的正确值。

下面的代码是我发现的最接近 Postgres 的代码,但它仍然SELECT nextval(...)在插入之前对序列执行 a (并在插入时明确包括 id 字段的值)。我只是希望 Hibernate 根本不包含 id 字段值,从而允许 Postgres 自己完成生成值的工作。

0 投票
2 回答
928 浏览

java - 阻止 Hibernate 尝试从数据库中获取计算字段

我有一个计算的业务对象的属性。该计算涉及一些登录用户的详细信息,因此不能表示为简单的 SQL 查询。

我在表示 Hibernate 映射 XML 文件中的字段时遇到了问题,因为 Hibernate 继续尝试从数据库中检索该字段,尽管没有该名称的列。

0 投票
1 回答
1773 浏览

hibernate - HibernateToolTask​​ (hbm2hbmxml) 不会在 @org.hibernate.annotations.Index 注释的休眠映射中生成索引

我正在尝试使用休眠注释从 POJO 生成休眠映射。然后我想使用 liquibase 来生成数据库模式。所以我需要在我的 POJO 中定义索引。

示例 POJO:

但是当我在 ant 中运行 HibernateToolTask​​ 时:

我在映射中没有得到任何索引:

同时,当我做 hbm2ddl - 'create index' 生成:

如何让休眠在映射中生成索引?

更新:

我发现,liquibase 使用注释来生成模式,所以这部分问题得到了解决。我还有一个:

我想将现有数据库反向工程为 POJO。POJO 是从映射生成的,映射(使用 jdbcannotation-hbm2hbmxml 生成)没有任何索引。我相信这本质上是相同的问题:hbm2hbmxml 不生成索引。

更新 2:

为什么我需要那个?我有一个现有的数据库架构。我曾经更改它,然后对 POJO 进行逆向工程。现在我想使用 POJO 并通过注释生成映射和模式。

所以我想让 POJO 与当前数据库模式匹配以继续使用它们。显然,除了外键名称和索引之外的所有内容都是匹配的。但是 hbm2java 不会生成 @Index 注释。例如

此任务在 ddl 中生成索引,而不在 POJO 中生成索引。

0 投票
2 回答
2080 浏览

java - 休眠一对多映射适用于列表而不是集合?

很抱歉打扰 - 也许这是一个非常简单的问题 - 但由于某种原因,下面的版本无法解析,而带有 set 的版本工作正常。事实上,如果我只是使用 set 版本并将 set 替换为 list 我得到:

嵌套异常是 org.hibernate.InvalidMappingException:无法从无效映射中解析映射文档

谢谢米莎

0 投票
3 回答
8985 浏览

sql - 连接两个具有不同连接列名的表

我有两个表 A -> B 具有多对一映射/关联。

表 B 的主键是表 A 中的外键。

问题是两个表中的列名不同。假设 B 具有主键列“typeNumId”,它是表 A 中的外键作为“类型”。如何在此列上加入两个表?我如何指定映射以指示表必须加入本质上相同的“typeNumId”和“type”。

特别是这可以通过休眠配置(hbm 文件)吗?

就像是