首先假设我们在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 {

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

被折叠的 条评论
为什么被折叠?



