如何使用Spring Data实现只读属性?

8
这应该是一件简单的事情!但是到目前为止我还没有找到答案。或者我漏掉了一些显而易见的东西,或者我漏掉了一些显而易见的东西...
我有一个类,比如Person。有三个字段 - “id”,“name”和“reputation”。假设我愿意接受“name”的更新,但不接受“reputation”的更新。当从数据库检索时,我想让Spring Data获取“reputation”的值,但在保存bean时忽略它。
@Transient注释已经存在,但是Spring完全忽略该字段,并且根本不填充它。理想情况下,我正在寻找类似于@ReadOnly注释的东西。
更多细节
- 我正在使用Spring Data进行Neo4j,但我相信这适用于任何Spring Data版本。 - 这是基于Jersey / Jackson的RESTful服务的后端。 - 当满足GET请求时,我想提供“声誉”价值。但是当我收到PUT更新时,我不想采取它。 - 到目前为止,我可以使用Jackson功能。但是我希望能够更新DB而无需先提取现有的Person对象。 - 我能想到使其工作的唯一方法是定义两个类 - 一个带有“声誉”字段,另一个没有。但这看起来真的很笨拙。难道没有更简单的方法吗?

我一直在研究,似乎这很容易添加。例如,已经有ReadOnlyRelatedToCollectionFieldAccessorFactory。我只需要类似于节点属性的东西。但我很困惑为什么这不是已经存在的。 - Dmitry Serebrennikov
我知道使用Spring Data和JPA,可以通过一个JPA注解来处理这个问题。我对Neo4j完全不熟悉,但我会开始研究Neo4j。 - Taylor
2个回答

2
你可以使用org.springframework.data.annotation中的@ReadOnlyProperty。请参见ReadOnlyProperty
@ReadOnlyProperty
private Object readOnlyValue;

2

您可以在没有setter的情况下使用transient属性。该transient属性将返回要受保护的db属性值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接