我编写了一个 Hibernate UserType
,它在我的 Java 类和 JDBC 之间进行类型转换VARCHAR
。我将我的 bean 注释如下:
@TypeDef...
class MyClass {
@Column(name = "...")
@Type(type = "MyPropertyType")
private MyProperty myProperty;
@Column(name = "...")
private Date date;
}
现在,用户可以通过命令行为该属性和其他属性指定条件。我想使用 JPA 将这些条件添加到查询中CriteriaBuilder
,例如:
criteriaBuilder.equal(column, operand);
这样做,Hibernate 会抱怨operand
(作为一个字符串)不对应于MyProperty.class
. Hibernate 不会尝试自动转换类型(它可以这样做,因为它知道目标类型并且它有我的注释,它指向实现的类型StringRepresentableType
。所以我将不得不手动进行类型转换。
- 是否可以明确告诉 Hibernate 尝试将字符串转换为目标类型?或者我可以从 Hibernate 获取特定 bean 属性的 Type 实例吗?
- 我在哪里可以得到 Hibernate 的
TypeRegistry
注册MyPropertyType
地址?