Warm tip: This article is reproduced from serverfault.com, please click

其他-如何让休眠不覆盖指定的UUID?

(其他 - How to let hibernate don't override the specified UUID?)

发布于 2011-12-06 02:56:46

我用uuid主键定义了一个实体:

@Entity
@Table(name = "SITES")
public class Site extends Model {

    @Id
    @Column(length = 32)
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String id;
}

它工作正常,但是我发现休眠将始终覆盖指定的ID:

当我Site使用指定的uuid保存对象时402881e533fe2de70133fe2df6790000,例如:

Site site = new Site();
site.setId("402881e533fe2de70133fe2df6790000");
siteDao.save(site);

打印ID:

System.out.println(site.id);

得到:

402881e534110dc30134110dd4e80000

有什么办法问休眠不要重写我指定的uuid吗?

Questioner
Freewind
Viewed
11
KaiThomasWerther 2011-12-06 17:49:26

为什么要使用setId()。你应该让Hibernate处理id,一切都正确。

如果你保留一个新的Object,则Hibernate会设置ID。