spring java自定义get方法

kkbh8khc  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(260)

使用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输出和保存的数据总是相同的。有什么建议吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题