如何在 JPA Hibernate 映射中将 GUID(不是 PK)添加到已经具有 PK(整数)的现有实体
Posted
技术标签:
【中文标题】如何在 JPA Hibernate 映射中将 GUID(不是 PK)添加到已经具有 PK(整数)的现有实体【英文标题】:How to add a GUID (Not a PK) to an existing entity that already has a PK(Integer) in JPA Hibernate Mapping 【发布时间】:2012-09-14 06:53:39 【问题描述】:我已经有一个 id 为 Integer 的实体类。作为要求,我们需要为此添加一个 GUID,目前不会是 PK。但是每当创建新实体时都应该自动填充。 (现有的会将这个新的列 GUID 设为 NULL)。此表中的每个新条目都没有填充 GUID(以 NULL 形式出现)。请帮忙。
@实体
@Table(name = "TABLEA")
公开课表A
private int id;
private String guid;
@Id
@GenericGenerator(name = "sequence", strategy = TableNameSequenceGenerator.TABLE_NAME_SEQUENCE_GENERATOR)
@GeneratedValue(generator = "sequence")
@Column(name = "ID")
public int getId()
return id;
public void setId(int id)
this.id = id;
@GenericGenerator(name = "guidGenerator", strategy = "guid")
@GeneratedValue(generator = "guidGenerator")
@Column(name = "GUID")
public String getGuid()
return guid;
public void setGuid(String guid)
this.guid = guid;
【问题讨论】:
【参考方案1】:如果您创建一个变量 ex,则有一个名为 Guid 的类。 Guid guid = new Guid();
然后你可以使用guid = Guid.NewGuid(),你可以在你返回guid的方法中使用它,它每次都会生成一个新的Guid。
我想有一种不同的方法,但我就是这样做的。
希望对您有所帮助。
【讨论】:
可能这个 Guid.NewGuid() 在 C# 中。我需要 JAVA 中的解决方案。使用 Hibernate JPA。 一次更正。我没有将 @Id 放在 GUID 列映射上。 我尝试通过 tableA.setGuid(GUID.generateGUID());但现在得到“嵌套异常是 java.sql.SQLException:ORA-01465:无效的十六进制数”。似乎生成的 GUID 不是十六进制数。任何帮助将不胜感激。以上是关于如何在 JPA Hibernate 映射中将 GUID(不是 PK)添加到已经具有 PK(整数)的现有实体的主要内容,如果未能解决你的问题,请参考以下文章
如何在pojo中用jpa或hibernate映射json字段?
如何使用 JPA 和 Hibernate 映射 PostgreSQL 枚举
如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?