W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
類型也用@Entity
注釋的字段將轉換為EntityValue
并存儲在父實體中。
這是一個Cloud Datastore實體的示例,其中包含JSON中的嵌入式實體:
{ "name" : "Alexander", "age" : 47, "child" : {"name" : "Philip" } }
這對應于一對簡單的Java實體:
import org.springframework.cloud.gcp.data.datastore.core.mapping.Entity; import org.springframework.data.annotation.Id; @Entity("parents") public class Parent { @Id String name; Child child; } @Entity public class Child { String name; }
Child
實體不是以其自己的類型存儲的。它們?nèi)看鎯υ?code class="literal" i="6229">parents類型的child
字段中。
支持多個級別的嵌入式實體。
嵌入式實體不需要具有
@Id
字段,只有頂級實體才需要。
例:
實體可以容納自己類型的嵌入式實體。我們可以使用此功能將樹存儲在Cloud Datastore中:
import org.springframework.cloud.gcp.data.datastore.core.mapping.Embedded; import org.springframework.cloud.gcp.data.datastore.core.mapping.Entity; import org.springframework.data.annotation.Id; @Entity public class EmbeddableTreeNode { @Id long value; EmbeddableTreeNode left; EmbeddableTreeNode right; Map<String, Long> longValues; Map<String, List<Timestamp>> listTimestamps; public EmbeddableTreeNode(long value, EmbeddableTreeNode left, EmbeddableTreeNode right) { this.value = value; this.left = left; this.right = right; } }
地圖將存儲為嵌入式實體,其中鍵值成為嵌入式實體中的字段名稱。這些映射中的值類型可以是任何常規(guī)支持的屬性類型,并且將使用配置的轉換器將鍵值轉換為String。
同樣,可以嵌入實體的集合。寫入時將轉換為ListValue
。
例:
代替上一個示例中的二叉樹,我們想在Cloud Datastore中存儲一棵普通樹(每個節(jié)點可以有任意數(shù)量的子級)。為此,我們需要創(chuàng)建一個類型為List<EmbeddableTreeNode>
的字段:
import org.springframework.cloud.gcp.data.datastore.core.mapping.Embedded; import org.springframework.data.annotation.Id; public class EmbeddableTreeNode { @Id long value; List<EmbeddableTreeNode> children; Map<String, EmbeddableTreeNode> siblingNodes; Map<String, Set<EmbeddableTreeNode>> subNodeGroups; public EmbeddableTreeNode(List<EmbeddableTreeNode> children) { this.children = children; } }
由于地圖是作為實體存儲的,因此它們可以進一步保存嵌入式實體:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: