【发布时间】:2019-02-14 07:03:26
【问题描述】:
假设我有一个名为 FooConverter 的 javax.persistence.AttributeConverter 实现,我想将此转换器应用于特定的实体字段。
如果我使用注释方法,它看起来像:
@Column
@Convert(converter = FooConverter.class)
private String barField;
在 orm XML 映射上它看起来像:
<entity class="com.example.FooBarEntity">
<convert converter="com.example.FooConverter" attribute-name="barField"/>
</entity>
但是,我想在javax.persistence.EntityManagerFactory 配置期间以编程方式添加此转换器。
import org.hibernate.cfg.Configuration;
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
private EntityManagerFactory buildEntityManagerFactory() {
Configuration config = new LocalSessionFactoryBuilder(dataSource);
config.addAnnotatedClass(com.example.FooBarEntity.class);
// I looking for something like config.addConverter(FooConverter, FooBarEntity, barField);
return config.buildSessionFactory();
}
有config.addAttributeConverter 方法,但它似乎只创建转换器实例而不将其绑定到特定的实体属性。但是,我只想将转换器应用于特定的 String 字段,因此 autoApply 不是一个选项。
【问题讨论】:
-
您是否检查了
addAttributeConverter(org.hibernate.cfg.AttributeConverterDefinition)与docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/cfg/… 一起使用?