1、GeneratedValue与GenericGenerator的区别
@GeneratorValue注解----JPA通用策略生成器
@GenericGenerator注解----自定义主键生成策略
2、@JsonIgnore简单介绍
使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性。
3、@Transient简单介绍
一旦变量被transient修饰,变量将不再是对象持久化的一部分,不会在存入数据库
4、@Enumerated简单介绍
@Enumerated(value = EnumType.ORDINAL) 采用枚举类型的序号值与数据库进行交互
@Enumerated(value=EnumType.STRING) 采用枚举类型与数据库进行交互
@Entity @Data public class Person { @Id @GeneratedValue(generator = "paymentableGenerator") @GenericGenerator(name = "paymentableGenerator", strategy = SnowflakeIdGenerator.TYPE) private String id; @Column(name = "user_name") private String userName; // @Convert(converter = SexConverter.class) @Enumerated(value = EnumType.ORDINAL) private SexEnum sex; /** * 创建时间 */ // @JsonIgnore @Transient @CreationTimestamp @Column(updatable = false) private LocalDateTime createAt; /** * 最后更新时间 */ @JsonIgnore @UpdateTimestamp private LocalDateTime updateAt; @ElementCollection Map<String,String > tag; }
雪花Id生产器
public class SnowflakeIdGenerator implements IdentifierGenerator { //当前类的路径 public final static String TYPE = "com.example.springbootadminclient.jpahiberate_test.SnowflakeIdGenerator"; final static Snowflake SNOWFLAKE = IdUtil.getSnowflake(); @Override public Serializable generate(SharedSessionContractImplementor implementor, Object o) throws HibernateException { return SNOWFLAKE.nextIdStr(); } }