问题标签 [naturalid]
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 - JPA 相当于 Hibernate 的 @NaturalId
@NaturalId
在 Hibernate 中,我可以使用实体的多个属性创建唯一键。
是否有 JPA 等效注释,它是其中的一部分javax.persistence
?
java - Hibernate @ManyToOne 引用类使用@NaturalId 而不是@Id
我有一些 Hibernate/JPA 注释(老实说仍然不知道区别),它们允许我创建一个关联类。这个类将两个相关的项目组合成一个对象。我最初正在使用@JoinTable
但意识到我需要更多的关联元数据,因此必须将代码转换为另一种对象类型。
现在我@Id
用来标记ID
我的对象的列,并@NaturalId (mutable = false)
使用String uuid
.
我的关联类正在使用@ManyToOne
并很好地创建表,但是当我查看它时,表使用该@Id
字段作为映射列。我宁愿让这个关联类使用 ,@NaturalId uuid
以便将关系/关联转移到其他系统。
如何获得使用正确标识符的关系?
作为参考,我的数据库和 Java 代码如下所示:
java - Hibernate 实体中的复合 @NaturalId
对于实体应用程序的生成 ID,使用触发器。因此,为了将生成的值分配给实体,我们使用如下结构:
SelectorGenerator
需要@NaturalId
用于某些字段,该字段应该具有(逻辑上)唯一值。但是有些表没有任何字段具有所有唯一值。SelectGenerator
不支持多个自然 ID。我们如何才能绕过这种情况?
java - Hibernate 5.2 从元模型中获取自然 id 属性
由于SessionFactory#getClassMetadata(java.lang.Class)
已弃用,我无法使用ClassMetadata。我想访问以下方法:
org.hibernate.metadata.ClassMetadata#getNaturalIdentifierProperties
org.hibernate.metadata.ClassMetadata#hasNaturalIdentifier
根据文档,我应该用 EntityManagerFactory.getMetamodel() 替换 getClassMetada。但是,元模型不包含获取 natural-id 的方法。我正在使用自然 ID 的 xml 映射,我想获取自然 ID 的属性名称来创建动态查询。
- 有没有办法使用这些方法来获取自然 id 映射?
- 还有另一种获取 ClassMetadata 实例的方法吗?
- 是否有可能获得一个实例
entityMetamodel
来替换 ClassMetadata?
java - 使用自然 ID 进行休眠实体缓存
我有一个实体注释,它由字典中的字段“代码”连接。我想取所有笔记,但有 n+1 个问题。当我获取笔记时,休眠也从表 Dicionary 获取数据,每个笔记有一个额外的查询(如果字典不在一级缓存中)。
我启用了 2 级缓存(我使用的是 ehcache),它仅在我通过 ID 获取字典时才起作用,也许有一种方法如何使用自然 id ?我不想使用查询缓存。也许我应该将字典从二级缓存加载到一级缓存?
我希望这足够清楚。谢谢你。
hibernate - 如何在 Hibernate 中使用非主键映射 @ManyToOne 关联?
如何@ManyToOne
在 Hibernate 中使用非主键映射关联?我可以使用@NaturalId
注释,但仍然有错误:
问题类(具有多个主键):
首要的关键
答题类:
看起来该关联仍然是 to@EmbeddedId
而不是@Naturalid
. 我不知道为什么?