首页 文章

Spring Data MongoDB如何在实体上设置字段?

提问于
浏览
2

我有一个MongoRepository类

public interface UserRepository extends MongoRepository<User, Long> {

  User findById(Long id);
}

而我的实体pojo看起来像这样

@Document(collection = "user")
class User {

  Long id;
  String name;
  Department department;
  …
}

当我调用findBy方法时,返回一个User对象 . 我想知道Spring Data MongoDB如何将DBObject转换为Java对象 . 我的印象是Spring Data MongoDB使用某种映射器(Jackson?),它将根据类中的字段名称或 @Field Annotation调用java(Entity)类的setter / constructors方法 . 但令我惊讶的是,从未调用过二传手 . 仅调用默认构造函数 .

那么字段是如何设置的?我问的原因是如果调用setter,它会给我一个设置其他字段的选项 .

谢谢

2 回答

  • 1

    Spring在它下面的后续层有一个实体转换器 . 它使用反射来读取字段,变量和签名的类型 . 转换逻辑对于所有数据存储库都是通用的 . 你可以阅读相同的here

    你也可以介绍一个自定义转换器,无论是你自己还是 Jackson ,它的一个例子是here

  • 2

    Spring Data默认为字段访问,因为访问器方法可以包含我们实际想要的其他逻辑,您可以通过使用 @AccessType(Type.PROPERTY) 注释您的类来切换到属性访问 .

相关问题