我想将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}}
答案 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<强> @Named 强>
实施转换器
覆盖getAsObject和getAsString方法