JPA / Hibernate:在复杂类上使用AttributeConverter时创建UserType是否明显?

时间:2016-04-12 07:43:35

标签: java hibernate jpa orm

我想将String AttributeConverter<SomeClass, String>作为AttributeConverter映射任意POJO类属性,但我明白这一点:

  

警告:找不到所请求的Java类[SomeClass]的匹配类型描述符;使用后备

这是否意味着UserType是不够的,我需要为每个复杂的类编写自定义String,以便能够将其转换为@Embeddable并返回?

Another solution需要@Entity public class SomePersistentClass { @Id int id; @Convert(converter = SomeClassConverter.class) public SomeClass attribute; //... } public class SomeClass { //... } 。它在这里更合适吗?

{{1}}

2 个答案:

答案 0 :(得分:0)

旧问题,但截至Hibernate 5.2.7(2017年1月24日),此警告已更改为:

  

WARN org.hibernate.type.descriptor.java.JavaTypeDescriptorRegistry -   HHH000481:我们可以遇到Java类型[类SomeClass]   找不到JavaTypeDescriptor,但似乎没有实现   equals和/或hashCode。这可以带来显着的性能   执行涉及此Java的相等/脏检查时出现的问题   类型。考虑注册自定义JavaTypeDescriptor或至少   实现equals / hashCode。所以,有这些解决方案:

要解决此问题,只需确保您的类型实现equals和hashcode,并使用Immutable.class注释它,以防它是不可变的。

请参阅:JavaTypeDescriptorRegistry - Could not find matching type descriptor for requested Java class

答案 1 :(得分:-1)

定义pojo
  1. <强> @Named

  2. 实施转换器

  3. 覆盖getAsObject和getAsString方法