我有以下课程(简化示例):
@Entity
public class Person {
private PersonName personName;
...
}
@Embeddable
public class PersonName {
private String name;
...
}
PersonName
包含一些验证和其他信息。
当我将Person
保存到Mongo时,PersonName
保存为:
{
...
"personName": { "name": "John Smith" },
...
}
虽然我理解这种行为在大多数情况下都有意义,但在这种情况下,我更喜欢它只是保存名称,理想情况下是" personName":" John Smith&#34 ;而不是嵌套内部对象。
有没有办法实现这一点(希望通过添加注释)?
答案 0 :(得分:1)
您始终可以为特定类型注册custom converters。类似的东西:
@WritingConverter
class PersonNameToStringConverter implements Converter<PersonName, String> {
@Override
public String convert(PersonName source) {
return source.name;
}
}
@ReadingConverter
class StringToPersonNameConverter implements Converter<String, PersonName> {
@Override
public PersonName convert(String source) {
return new PersonName(source);
}
}