自从Spring Boot 2使用Hibernate 5以来,我的MySQL 5.7数据库的@GeneratedValue
默认策略GenerationType.AUTO
导致GenerationType.SEQUENCE
在单独的表中模拟,因为MySQL 5.7不支持序列。
我希望使用GenerationType.IDENTITY
生成所有表的主ID。
是否有全局方法将其设置为默认策略,所以我不必每次在字段上使用GenerationType.IDENTITY
时都必须明确选择@GeneratedValue
策略?
答案 0 :(得分:2)
所有实体使用同一生成器的一种简单方法是拥有一个 match_pattern: 'regex',
match: 'gtinLinks|imageLink',
来定义@MappedSuperclass
字段并使用所需的生成策略,然后在您的实体中扩展该类。 / p>
除了您想要实体拥有的主键之外,您还可以定义其他属性。如果您要具有不同的实体“类型”,也可以定义其他@Id
类,即仅定义了pk或具有诸如@MappedSuperclass
或created
之类的其他字段的实体。>
updated
答案 1 :(得分:0)
您可以尝试创建自己的注释并使用它来代替@GeneratedValue
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 "";
}