问题标签 [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 投票
2 回答
627 浏览

hibernate - 分解一个大的 Hibernate 类

我有一个 Hibernate 类,它本质上只是一个围绕大量集合的包装器。

所以这个类(大量简化/伪)类似于:

等等。这些地图中的每一个都有一些与之相关的方法(添加/删除/询问/等)。

你可以想象,当我添加第 10 个左右的集合时,这个类的规模变得有点荒谬了。

我想做的是类似的事情:

将所有各种方法都包含在这些类中:

我想也许我可以使用@Embedded它,但我似乎无法让它工作(Hibernate 甚至没有尝试将 Map 保留在 wrapperClass 中)。

有没有人做过这样的事情?有什么提示吗?

非常感谢,
内德

0 投票
6 回答
25800 浏览

hibernate - 在 HBM 中添加枚举作为类属性

我正在尝试在 HBM 文件中创建一个包含枚举作为字段的类。

HBM 与此类似:

假设这是枚举:

问题是,在数据库中,我希望看到该枚举(a、b 或 c)的字符串值,但我得到了该字段的原始数据。

我该如何解决?

0 投票
5 回答
6466 浏览

java - 在 jar 中嵌入 hibernate hbm.xml 映射

是否可以将休眠映射 hbm.xml 嵌入到 jar 中并避免在 applicationContext.xml 中手动引用,例如

并将其指向一个罐子/等?
Nhibernate 有这样一个选项来指向一个程序集,它从那里获取 hbm。
注释不是一种选择

编辑: 编辑:我的意图是删除对 hbm 的手动引用,并指向一个通用位置,hibernate 可以从中获取它

0 投票
1 回答
3119 浏览

hibernate - 休眠的二级缓存对象是lazy=false,导致默认的fetch=join,它是否记录在任何地方?

我遇到了以下明显未记录的问题,我想了解是否

  1. 我做错事情了
  2. 有没有人遇到同样的问题?
  3. 它真的没有任何地方记录吗?还是我错过了什么?

行为是这样假设以下映射

首先,作为背景,多对一关系上fetch属性的 Hibernate 默认值应该是“ select ”,这至少是记录的内容(我会在找到它时在此处添加链接)

但是,这显然只有在引用的类是 lazy="true" 时才成立!

所以显然上面的映射被翻译成这个(因为 Bar 是lazy="false"):

现在为什么这会是一个问题?而不是 2 个选择,Hibernate 将使用其“父项”在单个选择中加载非惰性引用(在单个选择中使用 Bar 加载 Foo)

这实际上是有道理的,既然对象不是惰性的,为什么不加载它呢?

答案是这样的:如果 Bar 在二级缓存中会发生什么?

答案是——没有任何改变!

显然,人们会假设 Hibernate 足够聪明,可以理解不应加载这种类型的对象,但由于默认提取已从 select 更改为 join,Hibernate 没有选择(您不能使用二级缓存,但)

所以 Hibernate 做它被告知的事情,并使用一个连接从数据库中获取一个对象,它已经在 2 级缓存中

我找到的解决方案是从字面上将映射更改为 fetch="select"

现在,当 Bar 的第二次选择即将进行时,Hibernate 知道它不应该进入数据库,并从缓存中获取它。并且只会执行 1 个查询(预热后)

0 投票
1 回答
1686 浏览

mysql - 如何强制 Grails 在 MySQL 中为 Map 字段使用正确的列类型

我在 Grails 1.1.2 + MySQL 中有一个问题。

我的域类Something contains field

当我运行应用程序时,Grails 会创建表“something”和子表“something_price_map”。'something_price_map' 包含

问题是当我填写 priceMap 列时,即使使用像这样的小地图数据 'priceMap:[en:[100:4, 500:20, 600:24]]',数据的大小超过了255 字节。

有没有办法为内部映射(Map)指定 maxSize 约束,以便 Grails 使用 MEDIUMBLOB 或 BLOBK 而不是 TINYBLOB?

顺便说一句...使用内存数据库,一切正常。

0 投票
4 回答
4061 浏览

java - 是否可以在没有对象到对象映射的情况下强制执行外键?

假设提供了以下映射:

Java类:

是否可以更改 Hibernate 映射,以便Hibernate 在启动时仍强制执行和创建外键,但类A如下所示:

我知道,如果我转换<many-to-one...成 a<property...这会起作用,但数据库不会强制执行外键。

我需要这样做,因为对象B可能(或可能不会)单独初始化,这有时会导致 调用org.hibernate.LazyInitializationException: could not initialize proxy - no Session时发生异常。a.getB()我更愿意将它作为一个long idOfB并在必要时加载整个对象;这也将使对象的加载A更快。

我相信我的问题与这个问题非常相似,但是所提供的解决方案(使用延迟加载)在我的情况下并不合适,因为即使我打电话a.getB().getId(),我也会得到LazyInitializationException,而如果我打电话a.getIdOfB()我不会。

首先十分感谢。

0 投票
2 回答
645 浏览

java - 获取属性中列表的大小

我有一个 A 类,它有一个 B 元素列表。

在我的 A 类中,我想添加:

这将用 B 元素的数量来评估。所以当我打电话时,myA.getSize()我会得到它。

是否可以在休眠映射中使用单个属性映射计数查询?

我不想加载列表,这就是我想添加 size 属性的原因。

0 投票
2 回答
745 浏览

hibernate - Hibernate 映射映射问题

嗨,我正在尝试在 Hibernate 中保留地图,如下所示:

知道进行此映射的正确注释是什么吗?目前它将密钥集存储为整数......而不是公司对象。

谢谢。

0 投票
3 回答
3653 浏览

sql - Hibernate - 在 where 子句中使用外键时避免不必要的连接

我尝试在 Hibernate 中优化数据库查询,但我发现了一个阻止程序:

Country 的主键是CTRY_CD_ID. 如果我运行以下条件

我可以看到,休眠加入了 ctry 和 AR_SUPPORTED_LANG 表。为什么?跑起来会更好

sql而不是

我可以强制休眠运行第一个查询吗?

0 投票
2 回答
9062 浏览

nhibernate - 将属性映射到 NHibernate 中另一个表中的字段

考虑以下类:

映射到 Orders 表。是否可以通过外键关系将属性 CustomerName 映射到 Customers 表?