2013-03-30 58 views
5

這應該是一件簡單的事情!但到目前爲止,我一直無法找到答案。 要麼我失去了明顯的東西,否則我失去了明顯的東西...如何使用Spring Data實現只讀屬性?

我有一個班,說人。有三個字段 - 「ID」,「名稱」和「名譽」。 假設我願意更新「名稱」而不是「聲譽」。我希望Spring Data在從數據庫中檢索時獲取「信譽」的值,但在保存bean時忽略它。

@Transient註解是存在的,但是Spring完全忽略了該字段並且根本不填充它。理想情況下,我正在尋找像@ReadOnly註釋這樣的東西。

更多細節

  • 我使用Spring數據Neo4j的,但我相信這將適用於任何Spring數據的味道。
  • 這是基於Jersey/Jackson的RESTful服務的後端。 **當我滿足GET請求時,我想提供「信譽」值。但是當我收到PUT更新時,我不想接受它。 **到目前爲止,我可以使用傑克遜的功能。但我希望能夠更新數據庫,而無需首先獲取現有的Person對象。
  • 我可以想出這個工作的唯一方法是定義兩個類 - 一個具有「名譽」字段,另一個沒有。但是這看起來真的很笨重。沒有更簡單的東西嗎?
+0

我一直在挖掘,似乎這將是很容易添加。例如,已經有ReadOnlyRelatedToCollectionFieldAccessorFactory。我只需要這樣的節點屬性。我很困惑爲什麼這不是已經存在。 –

+0

我知道Spring Data和JPA,這是通過JPA註釋處理的。我對Neo4J完全不熟悉,但是我會開始,但是看着Neo4j。 – Taylor

回答

2

您可以使用不帶setter的瞬態屬性。該瞬態屬性將返回要保護的db屬性值。

0

您可以使用org.springframework.data.annotation中的@ReadOnlyProperty。看到ReadOnlyProperty

@ReadOnlyProperty 
private Object readOnlyValue;