gpt4 book ai didi

java - 如何让 Spring Data Couchbase 保留 id 字段?

转载 作者:行者123 更新时间:2023-12-02 06:11:27 25 4
gpt4 key购买 nike

我刚刚开始使用 CouchBase 4.5 和 Spring Data CouchBase 的新项目。我有一个如下所示的实体:

@Document
public class ItemType implements Serializable {
private static final long serialVersionUID = -874553420214538944L;

@Id
@Field
private String key;

@Field
private String displayName;

@Field
private int appAccountId;

@Field
private Map<String, FieldType> fieldTypes;

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getDisplayName() {
return displayName;
}

public void setDisplayName(String displayName) {
this.displayName = displayName;
}

public int getAppAccountId() {
return appAccountId;
}

public void setAppAccountId(int appAccountId) {
this.appAccountId = appAccountId;
}

public Map<String, FieldType> getFieldTypes() {
return fieldTypes;
}

public void setFieldTypes(Map<String, FieldType> fieldTypes) {
this.fieldTypes = fieldTypes;
}
}

当我使用 CouchBase CrudRepository 保存它时,它在数据库中的结果如下:

{
"_class": "com.mycompany.models.ItemType",
"appAccountId": 2,
"displayName": "Image - External",
"fieldTypes": {
"location": {
"rank": 1,
"type": "String",
"publishCascade": false,
"displayName": "Location",
"displayAttributes": {
"uiDisplayType": "TEXT_FIELD"
}
}
}
}

一切看起来都很好,除了“key”字段没有保留在文档中。我已经尝试过使用和不使用 @Field 注释,但结果是相同的。有什么方法可以确保 @Id 字段持久保存到数据库中吗?

最佳答案

Spring Data Couchbase 实现使用 @Id 字段作为 Couchbase 中的文档键。然后,它会在持久性期间忽略该特定字段,并且 @Field 不会改变这一点。

在这种特殊情况下,不忽略 @Field 会使反序列化逻辑变得复杂,因为 1 个属性的值将出现在 2 个位置...

关于java - 如何让 Spring Data Couchbase 保留 id 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com