首页 > 解决方案 > 在 MappedSuperClass 中自动装配存储库

问题描述

我无法在@Autowire里面的存储库@MappedSuperClass

@MappedSuperClass
public class HomeAddressType {

 private AddressTypeRespository addressTypeRepository;

 @Embedded
 protected AddressTypeId addressTypeId;

 @Autowired
 AddressTypeRespository(AddressTypeRespository addressTypeRespository) {
   this.addressTypeRepository=addressTypeRepository;
   this.addressTypeId = new AddressTypeId(this.addressTypeRepository.getAddressTypeByCode().getId);
 }   

}

这样我就可以将它隐藏在我的域模型对象中HomeAddress,因为我使用的是休眠注释并且HomeAddress实际上是一个Address与表AddressTypeId(FK)AddressType

所以当我的Aggregate Factory构建HomeAddressAddressType默认隐藏。所以我可以对域模型消费者隐藏它。

class HomeAddress extends HomeAddressType{
      @Embedded
      AddressId addressId;
      ......
}

我怎样才能做到这一点?

标签: hibernatespring-bootspring-data-jpadomain-driven-design

解决方案


您不能在 a 中自动装配 bean,MappedSuperClass因为它不是由 spring 管理的。

我可以建议的一种解决方法是AddressTypeRespository在您在启动时初始化的一个托管 bean 中有一个类型为静态字段(例如在构造函数中),然后您可以从您的HomeAddressType


推荐阅读