Java @MappedSuperclass中@ID的风险
实际上,我想将实体id从Long类型更改为UUID。 我所有的实体都有一个MappedSuperclass。为了节省时间,我想将新的解决方案添加到MappedSuperclass对象中,并从特定实体中删除旧的解决方案 这是一种良好的做法还是与风险相关 老办法 新解决方案Java @MappedSuperclass中@ID的风险,java,spring,hibernate,uuid,Java,Spring,Hibernate,Uuid,实际上,我想将实体id从Long类型更改为UUID。 我所有的实体都有一个MappedSuperclass。为了节省时间,我想将新的解决方案添加到MappedSuperclass对象中,并从特定实体中删除旧的解决方案 这是一种良好的做法还是与风险相关 老办法 新解决方案 我们在映射的超类中也使用ID,到目前为止没有任何问题。在您的情况下,如果已经存在实体,则可能存在风险:您正在更改类型和id生成,因此必须转换任何现有id等。谢谢,我将在重写实体类后更改任何现有id。如果CustomObject也
我们在映射的超类中也使用ID,到目前为止没有任何问题。在您的情况下,如果已经存在实体,则可能存在风险:您正在更改类型和id生成,因此必须转换任何现有id等。谢谢,我将在重写实体类后更改任何现有id。如果CustomObject也声明了@ID怎么办?如果有人输入了一个拼写错误,忘记了MappedSuperclass对象ID?你的意思是如果实体声明了
ID
,那么MappedSuperclass已经这样做了?我不完全确定,但我认为Hibernate会抱怨,或者任何开发人员测试都会失败。好的,谢谢。我会自己测试。
@Entity
public class CustomObject extends DomainObject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
}
@MappedSuperclass
public class DomainObject {
@Id
@GenericGenerator(name = "uuid", strategy = "uuid2")
@GeneratedValue(generator = "uuid")
@Type(type="pg-uuid")
@Column(name = "ID")
private UUID id;
}