PostgreSQL中自定义type如何映射到JPA的entity

本文介绍了如何在PostgreSQL中使用自定义type,并将其映射到JPA实体。通过在JPA ENTITY的user_role_type字段添加type注解指定为自定义ENUM,配合数据库中的自定义type,定义相应的枚举类。实现数据库操作时,正常设置ENTITY的枚举类值即可完成CRUD操作。

首先假设我们在user_role表的user_role_type字段使用了自定义的type

CREATE TYPE user_role_type AS ENUM(
    'GUEST',
    'ADMIN'
);

CREATE TABLE user_roles (
    id SERIAL NOT NULL PRIMARY KEY,
    role user_role_type NOT NULL,
);

接下去是JPA的ENTITY定义,请注意UserRoleType的注解,对于该类型添加type注解,告诉ENTITY此字段的type为自定义ENUM字段,需要进行STRING转换

并且对应数据库中的自定义type,java中配置出枚举类

public class UserRole implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	private Integer id;
	private Timestamp created;

    @Enumerated(EnumType.STRING)
    @Type(type = "com.lobs.EnumTypePostgreSql")
	private UserRoleType role;
}

public enum UserRoleType {
         ADMIN, GUEST;

}

public class EnumTypePostgreSql extends EnumType {
    @Override
    public void nullSafeSet(PreparedStatement st, Object value, int index,
            SharedSessionContractImplementor session)
            throws HibernateException, SQLException {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值