我有一个用@RelationshipEntity注释的类。 这个类包含我用一些整数值定义的对象。 有可能以某种方式定义嵌套对象的成员将被保存为关系中的属性吗?
者Justyna。
答案 0 :(得分:0)
是的,但应将它们转换为提供自定义Spring转换器的字符串。为了避免为您需要嵌入的每个类声明转换器,您可以扩展一个公共接口(即使是空接口,只是为了声明转换器)。 必须在SDN配置文件中声明转换器,如下所示:
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="..."/>
<bean class="..."/>
</list>
</property>
</bean>
您应该定义两个转换器,一个用于将对象转换为字符串,另一个用于从字符串到对象的相反转换。 例如,使用Gson:
final class ToStringConverterFactory implements ConverterFactory<MyClass, String> {
@Override
public <T extends String> Converter<MyClass, T> getConverter(Class<T> type) {
return new ToStringConverter(type);
}
private final class ToStringConverter<E extends MyClass, S extends String> implements Converter<E, S> {
private Class<S> stringType;
public ToStringConverter(Class<S> stringType) {
this.stringType = stringType;
}
@Override
public S convert(E source) {
if (source != null) {
return (S) new Gson().toJson(source);
} else {
return null;
}
}
}
}
final class ToObjectConverterFactory implements ConverterFactory<String, MyClass> {
@Override
public <T extends MyClass> Converter<String, T> getConverter(Class<T> type) {
return new ToObjectConverter(type);
}
private final class ToObjectConverter<S extends String, E extends MyClass> implements Converter<S, E> {
private Class<E> objectType;
public ToObjectConverter(Class<E> objectType) {
this.objectType = objectType;
}
@Override
public E convert(S source) {
if (source != null) {
return (E) new Gson().fromJson(source, objectType);
} else {
return null;
}
}
}
}