我用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吗?
为什么要使用setId()。你应该让Hibernate处理id,一切都正确。
如果你保留一个新的Object,则Hibernate会设置ID。
我认为这不是可以接受的回应。OP明确了这一点。为什么要回答另一个问题?
你是对的。特定问题的答案是:不要使用@GeneratedValue,并且Hibernate不会覆盖您的默认ID。