使用spring数据,我希望能够在域模型类中定义一个自定义get方法,而不会影响模型本身。例如,使用此模型:
@Document
public class Person
{
private String firstName;
private String lastName;
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
this.firstName = firstName;
}
public String getLastName()
{
return lastName;
}
public void setLastName(String lastName)
{
this.lastName = lastName;
}
}
到目前为止,一切都很顺利:模型人有字段“firstname”和“lastname”,我可以成功地保存一个“person”。生成的json包含字段“firstname”和“lastname”。现在我想在json中添加一些额外的数据,而不影响模型及其保存操作,如下所示:
@Document
public class Person
{
private String firstName;
private String lastName;
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
this.firstName = firstName;
}
public String getLastName()
{
return lastName;
}
public void setLastName(String lastName)
{
this.lastName = lastName;
}
// custom method
public String getFullName()
{
return firstName+" "+lastName;
}
}
json应该包含与前面相同的数据,但这次还包含一个额外的“fullname”字段。但是,同时数据模型假定添加了一个额外的字段“fullname”,并在保存到数据库时用空值填充。
我已经尝试过像@transient这样的注解,但是这不起作用。文档状态为“默认情况下,所有私有字段都Map到文档,此注解将应用它的字段排除在数据库中”,因此它只能应用于类中的私有字段,而不能应用于get方法。
Spring做这件事的正确方法是什么?当然我可以扩展类person并在其中包含getfullname方法,但是我想知道是否可以在一个类中包含所有内容。
编辑:
我使用elasticsearch作为db引擎,使用spring数据elasticsearch 1.2.0.release。我刚刚测试了mongodb作为替代品,然后它工作得很好,即使没有@transient注解。我认为elasticsearchrepository的index方法是在将提供的类示例保存到数据库时序列化它。这样,json输出和保存的数据总是相同的。有什么建议吗?
暂无答案!
目前还没有任何答案,快来回答吧!