如何将作为对象的Java类属性映射到单个JPA表列?
我有一个Sprint引导web服务,它使用JPA映射到底层SQL数据库 其中一个域类有一个属性,它是一个复杂的Java对象,我不想在普通映射/联接表中持久化它。相反,我希望将这个Java对象映射到主表中的一个列,并理想地将数据以JSON格式存储在一个字符串列中 有什么建议吗?您可以使用jpa的:如何将作为对象的Java类属性映射到单个JPA表列?,java,object,jpa,Java,Object,Jpa,我有一个Sprint引导web服务,它使用JPA映射到底层SQL数据库 其中一个域类有一个属性,它是一个复杂的Java对象,我不想在普通映射/联接表中持久化它。相反,我希望将这个Java对象映射到主表中的一个列,并理想地将数据以JSON格式存储在一个字符串列中 有什么建议吗?您可以使用jpa的: 非常感谢!写入正在工作,但当我尝试读取父对象时,“MyObject”属性返回为null。“获取”与此相关吗?发现问题。我使用的是Java8 time‘Instant’,读流似乎不支持它。有什么建议吗?修
非常感谢!写入正在工作,但当我尝试读取父对象时,“MyObject”属性返回为null。“获取”与此相关吗?发现问题。我使用的是Java8 time‘Instant’,读流似乎不支持它。有什么建议吗?修复了“即时问题…”。。。映射器=新对象映射器;mapper.registerModulenew JavaTimeModule;mapper.disableSerializationFeature.WRITE_DATES_作为时间戳;很高兴它有帮助:
@Converter
public class MyObjectConverter implements AttributeConverter<MyObject, String> {
@Override
public String convertToDatabaseColumn(MyObject myObject) {
//convert myobject to json: for instance use ObjectMapper from Jackson
if( myObject == null )
return null;
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(myObject );
}
@Override
public MyObject convertToEntityAttribute(String myObjectString) {
// convert myObjectString back to object
if( myObjectString== null )
return null;
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(myObjectString, MyObject.class);
}
}
@Column
@Converter(converter = MyObjectConverter.class)
MyObject myObject;