问题标签 [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.
hibernate - 分解一个大的 Hibernate 类
我有一个 Hibernate 类,它本质上只是一个围绕大量集合的包装器。
所以这个类(大量简化/伪)类似于:
等等。这些地图中的每一个都有一些与之相关的方法(添加/删除/询问/等)。
你可以想象,当我添加第 10 个左右的集合时,这个类的规模变得有点荒谬了。
我想做的是类似的事情:
将所有各种方法都包含在这些类中:
我想也许我可以使用@Embedded
它,但我似乎无法让它工作(Hibernate 甚至没有尝试将 Map 保留在 wrapperClass 中)。
有没有人做过这样的事情?有什么提示吗?
非常感谢,
内德
hibernate - 在 HBM 中添加枚举作为类属性
我正在尝试在 HBM 文件中创建一个包含枚举作为字段的类。
HBM 与此类似:
假设这是枚举:
问题是,在数据库中,我希望看到该枚举(a、b 或 c)的字符串值,但我得到了该字段的原始数据。
我该如何解决?
java - 在 jar 中嵌入 hibernate hbm.xml 映射
是否可以将休眠映射 hbm.xml 嵌入到 jar 中并避免在 applicationContext.xml 中手动引用,例如
并将其指向一个罐子/等?
Nhibernate 有这样一个选项来指向一个程序集,它从那里获取 hbm。
注释不是一种选择
编辑: 编辑:我的意图是删除对 hbm 的手动引用,并指向一个通用位置,hibernate 可以从中获取它
hibernate - 休眠的二级缓存对象是lazy=false,导致默认的fetch=join,它是否记录在任何地方?
我遇到了以下明显未记录的问题,我想了解是否
- 我做错事情了
- 有没有人遇到同样的问题?
- 它真的没有任何地方记录吗?还是我错过了什么?
行为是这样假设以下映射
首先,作为背景,多对一关系上fetch属性的 Hibernate 默认值应该是“ select ”,这至少是记录的内容(我会在找到它时在此处添加链接)
但是,这显然只有在引用的类是 lazy="true" 时才成立!
所以显然上面的映射被翻译成这个(因为 Bar 是lazy="false"):
现在为什么这会是一个问题?而不是 2 个选择,Hibernate 将使用其“父项”在单个选择中加载非惰性引用(在单个选择中使用 Bar 加载 Foo)
这实际上是有道理的,既然对象不是惰性的,为什么不加载它呢?
答案是这样的:如果 Bar 在二级缓存中会发生什么?
答案是——没有任何改变!
显然,人们会假设 Hibernate 足够聪明,可以理解不应加载这种类型的对象,但由于默认提取已从 select 更改为 join,Hibernate 没有选择(您不能使用二级缓存,但)
所以 Hibernate 做它被告知的事情,并使用一个连接从数据库中获取一个对象,它已经在 2 级缓存中
我找到的解决方案是从字面上将映射更改为 fetch="select"
现在,当 Bar 的第二次选择即将进行时,Hibernate 知道它不应该进入数据库,并从缓存中获取它。并且只会执行 1 个查询(预热后)
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?
顺便说一句...使用内存数据库,一切正常。
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()
我不会。
首先十分感谢。
java - 获取属性中列表的大小
我有一个 A 类,它有一个 B 元素列表。
在我的 A 类中,我想添加:
这将用 B 元素的数量来评估。所以当我打电话时,myA.getSize()
我会得到它。
是否可以在休眠映射中使用单个属性映射计数查询?
我不想加载列表,这就是我想添加 size 属性的原因。
hibernate - Hibernate 映射映射问题
嗨,我正在尝试在 Hibernate 中保留地图,如下所示:
知道进行此映射的正确注释是什么吗?目前它将密钥集存储为整数......而不是公司对象。
谢谢。
sql - Hibernate - 在 where 子句中使用外键时避免不必要的连接
我尝试在 Hibernate 中优化数据库查询,但我发现了一个阻止程序:
Country 的主键是CTRY_CD_ID
. 如果我运行以下条件
我可以看到,休眠加入了 ctry 和 AR_SUPPORTED_LANG 表。为什么?跑起来会更好
sql而不是
我可以强制休眠运行第一个查询吗?
nhibernate - 将属性映射到 NHibernate 中另一个表中的字段
考虑以下类:
映射到 Orders 表。是否可以通过外键关系将属性 CustomerName 映射到 Customers 表?