首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Hibernate全局配置为使用GenerationType.IDENTITY

将Hibernate全局配置为使用GenerationType.IDENTITY
EN

Stack Overflow用户
提问于 2018-07-02 11:39:24
回答 2查看 767关注 0票数 0

由于Spring 2使用Hibernate 5,所以我的@GeneratedValue 5.7数据库的GenerationType.AUTO默认策略会在单独的表中模拟GenerationType.SEQUENCE,因为MySQL 5.7不支持序列。

我希望使用GenerationType.IDENTITY生成所有表的主I。

是否有一种全局方法将其设置为默认策略,因此每次在字段中使用GenerationType.IDENTITY策略时都不必显式地选择@GeneratedValue策略?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-02 11:53:54

所有实体使用相同生成器的一种简单方法是有一个@MappedSuperclass,它定义@Id字段并使用您希望的生成策略,然后在实体中扩展该类。

除了希望实体拥有的主键之外,还可以定义其他属性。如果您想要有不同的实体“类型”,也可以定义额外的@MappedSuperclass类,例如那些只定义了pk的实体,或者具有其他字段(如createdupdated )的实体。

代码语言:javascript
复制
@MappedSuperclass
public class PKEntity {

    @Id
    @GenericGenerator(name="universal", etc. etc. etc.)
    @GeneratedValue(generator="universal")
    private Long id;

    // Possibly more common columns your entities have
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-02 11:48:35

您可以尝试创建自己的注释,并使用它而不是@GeneratedValue

代码语言:javascript
复制
import javax.persistence.GenerationType;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomGeneratedValue {
    GenerationType strategy() default GenerationType.IDENTITY;

    String generator() default "";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51135345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档