Hibernate自定义类型 集合--->字符串 存储
/** * 此处没有使用关联 是为了提高性能(后续会挨着查询资源和权限列表,因为有缓存,数据量也不是很大 所以性能不会差) * <p>User: Zhang Kaitao * <p>Date: 13-4-5 下午2:04 * <p>Version: 1.0 */@TypeDef( name = "SetToStringUserType", typeClass = CollectionToStringUserType.class, parameters = { @Parameter(name = "separator", value = ","), @Parameter(name = "collectionType", value = "java.util.HashSet"), @Parameter(name = "elementType", value = "java.lang.Long") })@Entity@Table(name = "sys_role_resource_permission")public class RoleResourcePermission extends BaseEntity<Long> { /** * 角色id */ @ManyToOne(optional = true, fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT) private Role role; /** * 资源id */ @Column(name ="resource_id") private Long resourceId; /** * 权限id列表 * 数据库通过字符串存储 逗号分隔 */ @Column(name ="permission_ids") @Type(type = "SetToStringUserType") private Set<Long> permissionIds; public RoleResourcePermission() { }
?
@TypeDef(
? ? ? ? name = "SetToStringUserType",
? ? ? ? typeClass = CollectionToStringUserType.class,
? ? ? ? parameters = {
? ? ? ? ? ? ? ? ?@Parameter(name = "separator", value = ","),
? ? ? ? ? ? ? ? ?@Parameter(name = "collectionType", value = "java.util.HashSet"),
? ? ? ? ? ? ? ? ?@Parameter(name = "elementType", value = "java.lang.Long")
? ? ? ? }
)
定义类型并指定参数化的集合类型、元素类型和分隔符。
?
github代码