【问题标题】:How to add a GUID (Not a PK) to an existing entity that already has a PK(Integer) in JPA Hibernate Mapping如何在 JPA Hibernate 映射中将 GUID(不是 PK)添加到已经具有 PK(整数)的现有实体
【发布时间】: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;
}

}

【问题讨论】:

    标签: hibernate jpa candidate-key


    【解决方案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 不是十六进制数。任何帮助将不胜感激。
    猜你喜欢
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2011-06-12
    • 2014-11-14
    • 2012-04-06
    相关资源
    最近更新 更多