栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PersistenceConstructor参数变量名与实例变量名不匹配

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PersistenceConstructor参数变量名与实例变量名不匹配

tl; dr

我们需要依靠构造函数参数名称来匹配字段名称,以找出要拉入文档的哪个字段。如果要

@Value("#root.field_name")
在构造函数参数上自定义此用法。

很长的故事

如果您使用带有参数的构造函数让Spring
Data使用该构造函数实例化给定的类,我们必须在调用时将参数传递给该构造函数。为了找出我们必须提交的文档字段,我们需要检查匹配属性以进行潜在的字段名称自定义。请参见以下示例:

@documentclass MyEntity {  @Field("foo")  private String myField;  public MyEntity(String myField) {    this.myField = myField;  }}

在这种情况下,我们需要将字段通过管道传递给

foo
构造函数,并且如果我们无法以某种方式获得对该属性的引用,则无法找到有关此信息的方法。如果构造函数参数名称有所不同,我们应该如何可靠地找出实际应将哪个字段值用作参数?您在问题中显示的示例
永远无法立即 使用,因为您的文档将包含一个
m_property
字段,而且除了添加更明确的配置外,绝对没有办法找出您实际上希望注入的字段。

要自定义此行为,可以使用Spring的

@Value
注释并将自定义文档字段注入到构造函数中。该文档本身可通过
#root
变量获得。因此,您可以轻松地将上面的示例更改为:

@documentclass MyEntity {  @Field("foo")  private String myField;  public MyEntity(@Value("#root.foo") String somethingDifferent) {    this.myField = somethingDifferent;  }}

我强烈建议您向属性中添加自定义字段名称,并且不想将属性命名约定公开给数据库。

@Value
在参考文档中简要提到了pf的用法,但是我创建了一个票证来改进文档并使之更加明显。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号