我尝试通过JPA和Spring将一些JSON存储为列中的字符串,并遵循baeldung tutorial。我的代码如下:
@Column
@Convert(converter = MyEntityExtentionConverter.class)
private Map<String, Object> myEntityExtention;
MyEntityExtentionConverter
是javax.persistence.AttributeConverter<Map<String, Object>, String>
的一个实现,它使用JacksonObjectMapper
来回转换字符串。
根据提到的教程,这应该是它,但现在我得到一个错误,
“Basic”属性类型不应是Map
从理论上讲,我可以通过向注解中添加@SuppressWarnings("JpaAttributeTypeInspection")
来禁用它,但这感觉像是忽略而不是解决错误。
3条答案
按热度按时间m3eecexj1#
您必须使用@Type注解属性“myEntityExtension”,但无法同时添加@Type和@Convert..
正如你所看到的in this tutorial你必须在你的实体顶部定义json类型:
然后添加**@Type注解,而不是@Convert**:
确保添加所有正确的依赖项/版本。
也就是说,我使用的是hib5.4,因此我的依赖项是:
jfgube3f2#
看起来这是IntelliJ IDEA的一个问题:
https://youtrack.jetbrains.com/issue/IDEA-270687
我们可以通过以下方式使用变通方案:使用
@SuppressWarnings("JpaAttributeTypeInspection")
注解可删除该警告。rqqzpn5f3#
该字段不应持久化。请删除@Column注解并使用@Transient。您应该将其持久化为JSON,这将在customerAttributeJSON中完成,当从数据库阅读时,将填充customerAttributes,您可以将其与DTO一起使用。