我写了一个Sping Boot 启动器。有一些逻辑需要AttributeConverter来为我的服务服务。是否可以在启动器中创建它并在休眠中注册它?
aiazj4mn1#
您可以使用@Converter(autoApply = true)为给定类型的所有实体属性全局启用AttributeConverter:
@Converter(autoApply = true)
@Converter(autoApply = true) // important public class FooConverter implements AttributeConverter<Foo, String> { @Override public String convertToDatabaseColumn(Foo attribute) { // ... } @Override public Color convertToEntityAttribute(String dbData) { // .. } }
然而,这是假设只有一个转换器用于该类型.如果您有多个不同的转换器,比如说不同的spring-boot-starter依赖项,您可以使用Hibernate @ConverterRegistration为服务激活一个特定的转换器:
@ConverterRegistration
@org.hibernate.annotations.ConverterRegistration(converter=com.company.entitiy.FooConverter.class, autoApply=true) package com.company.entitiy;
如果您想要更精细的配置,可以分别在每个实体属性上配置转换器,例如:
@Entity public class Bar { @Convert(converter = FooConverter.class) private Foo foo; // ... }
1条答案
按热度按时间aiazj4mn1#
您可以使用
@Converter(autoApply = true)
为给定类型的所有实体属性全局启用AttributeConverter:然而,这是假设只有一个转换器用于该类型.如果您有多个不同的转换器,比如说不同的spring-boot-starter依赖项,您可以使用Hibernate
@ConverterRegistration
为服务激活一个特定的转换器:如果您想要更精细的配置,可以分别在每个实体属性上配置转换器,例如: