mysql jpa uuid_java – 可以说服JPA在例如UUID和字符串之间...

Chris Lercher评论了Note: Starting from JPA 2.1, a @Convert annotation can be used with an AttributeConverter.

这种方法运行良好,并且与任何JPA提供程序兼容,而@Type(type =“uuid-char”)是提供程序特定的.

此外,autoApply = true应用于每个实体的每个字段,因此不需要在每个实体中注释每个字段.请参阅文档here并查看以下示例:

转换器类

@Converter(autoApply = true)

public class UuidConverter implements AttributeConverter {

@Override

public String convertToDatabaseColumn(final UUID entityValue) {

return ofNullable(entityValue)

.map(entityUuid -> entityUuid.toString())

.orElse(null);

}

@Override

public UUID convertToEntityAttribute(final String databaseValue) {

return ofNullable(databaseValue)

.map(databaseUuid -> UUID.fromString(databaseUuid))

.orElse(null);

}

}

实体

@Entity

public class Customer implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy=GenerationType.AUTO)

private Long id;

@Column

private String name;

@Column(nullable = false, unique = true, updatable = false, columnDefinition="CHAR(36)")

private UUID customerId = randomUUID();

//.....

}

这就是它在数据库中的样子

TABLE customer

ID BIGINT(19) NO PRI (NEXT VALUE FOR SYSTEM_SEQUENCE_5D3)

NAME VARCHAR(255) YES NULL

CUSTOMER_ID VARCHAR(36) NO UNI NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值