Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring “我如何绘制地图?”;id";物业转为「;id";Mongo中没有@field注释的字段?_Spring_Spring Mongodb - Fatal编程技术网

Spring “我如何绘制地图?”;id";物业转为「;id";Mongo中没有@field注释的字段?

Spring “我如何绘制地图?”;id";物业转为「;id";Mongo中没有@field注释的字段?,spring,spring-mongodb,Spring,Spring Mongodb,我有多个带有id字段的类。我想使用spring数据MongoDB将它们的实例存储在MongoDB中。我想将这些类中的id属性映射到Mongo中的id字段 我的课程是这样的: public class Entity { private final String id; // = 42 ... } 以下是我对Mongo系列的期望: { "_id": ObjectId("5fba805dfdaaa760974d45de"),

我有多个带有
id
字段的类。我想使用spring数据MongoDB将它们的实例存储在MongoDB中。我想将这些类中的
id
属性映射到Mongo中的
id
字段

我的课程是这样的:

public class Entity {
    private final String id; // = 42

    ...
}
以下是我对Mongo系列的期望:

{
    "_id": ObjectId("5fba805dfdaaa760974d45de"),
    "id": "42"
}
,spring mongodb将
id
属性映射到Mongo中的
\u id
字段。我知道避免这种情况的最简单方法是将
@org.springframework.data.mongodb.core.mapping.Field(“id”)
注释放在Java类中的
id
属性上。但是我不想使用这个注释,因为我想让我的模型独立于Mongo、Spring或其他东西。这里有哪些选择

以下是我尝试或检查的内容:

  • 注册自定义以便在Mongo文档写入Mongo之前或从Mongo读取之后修改Mongo文档。它不适用于我,因为自定义侦听器仅在get和insert操作期间调用,而在update或upsert操作期间不调用(有关详细信息,请参阅讨论)

  • 提供自定义-这不起作用,因为在spring data mongodb代码中,他们使用的策略字段名称不是
    id
    \u id

  • 为我的每个类提供自定义转换器。我相信它应该起作用。但是这种方法似乎太复杂了,因为我有很多类,每个类中都有很多属性,我不确定我是否希望有很多转换器里面有样板代码


  • 如果有任何帮助,我们将不胜感激。

    您不认为id和_id已经混淆了吗

    如果您有充分的理由拥有一个id(不同于DB);给它一个名称。例如:版本号、旧版本号、其他服务号。。。一些有意义的名字

    是的,在您的案例中使用@Field是最简单的方法