我有一些 Hibernate/JPA 注释(老实说仍然不知道区别),它们允许我创建一个关联类。这个类将两个相关的项目组合成一个对象。我最初正在使用@JoinTable
但意识到我需要更多的关联元数据,因此必须将代码转换为另一种对象类型。
现在我@Id
用来标记ID
我的对象的列,并@NaturalId (mutable = false)
使用String uuid
.
我的关联类正在使用@ManyToOne
并很好地创建表,但是当我查看它时,表使用该@Id
字段作为映射列。我宁愿让这个关联类使用 ,@NaturalId uuid
以便将关系/关联转移到其他系统。
如何获得使用正确标识符的关系?
作为参考,我的数据库和 Java 代码如下所示:
AssociationsTable
----------------------------------------------
| ID | META DATA | ID ASSOC. 1 | ID ASSOC. 2 |
----------------------------------------------
| 1 | stuff | 1 | 2 |
----------------------------------------------
Objects
------------------------------
| ID | META DATA | UUID |
------------------------------
| 1 | stuff | FOO-123 |
------------------------------
| 2 | stuff | BAR-456 |
------------------------------
Association Class{
ObjA main;
ObjA sub;
@ManyToOne
getMain()
@ManyToOne
getSub()
}
ObjA Class{
Long id;
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
@XmlElement
@Column(name = "ID", unique = true, nullable = false)
getId()
String uuid;
@NaturalId (mutable = false)
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
getUUID()
}