我希望能够在休眠状态下使用自己的自定义ID生成器,但每个实体都不会出现多个注释的混乱情况。
例:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator")
@GenericGenerator(name = "XyzIdGenerator",
strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator",
parameters = {
@Parameter(name = "sequence", value = "xyz_id_sequence")
})
好多啊。我想在休眠状态下看到“ @Id”的地方进行设置
默认情况下,它将调用我的生成器并将其分配给ID。
最佳答案
我通常这样做的方法是创建一个包含共享的带注释的变量的超类,并使实体对其进行扩展。例:
@MappedSuperclass
public class PersistableEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator")
@GenericGenerator(name = "XyzIdGenerator",
strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator",
parameters = {
@Parameter(name = "sequence", value = "xyz_id_sequence")
})
protected Long id;
// ...
}
@Entity
public class Abc extends PersistableEntity {}
@MappedSuperclass
在这里很重要:指定一个类,将其映射信息应用于
从中继承的实体。映射的超类没有单独的
为它定义的表。
关于java - 默认情况下如何在 hibernate 状态下使用自定义 key 生成器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36367538/