【问题标题】:Autowired Domain/Entity classes retains Old values自动装配的域/实体类保留旧值
【发布时间】:2017-02-03 12:38:46
【问题描述】:

我有一个用于传入事件消息的映射器类。

一旦事件消息到达应用程序,映射器类将设置实体对象中的值并将其保存在数据库中。 我已经在我的映射器类中自动装配了实体对象。

每当有新事件出现时,自动装配的实体对象仍然具有旧/以前的值。

在这种情况下是否可以自动装配域/实体对象,或者我应该使用“New”关键字而不是作为 Spring bean 自动装配。

我看到一些关于使用@Configurable 的帖子。我不确定在这种情况下哪个是最佳编码实践?

@Service
public class LegacyEventMapper {

        @Autowired
        private LegacyEvent legacyEvent;

        @Autowired
        private LegacyEntity legacyEntity;

        public void mapLegacyNotificationDetails(LegacyScheduleEvent body) throws Exception {
       //Setting the values into the Entity object

谢谢

【问题讨论】:

  • 请附上您自动装配和映射器的代码
  • 现在添加代码
  • @firstpostcommenter 你正在自动装配一个实体,你的 LegacyEntity 实际上是用 @Entity 注释的?
  • 是的,实体类是用@Entity注解自动装配的

标签: spring java-8


【解决方案1】:

我不知道你为什么真的想要 @Autowire@Entity 并让它知道弹簧。这是错误的。你可以做到,但绝对没有意义。

您真正想要做的是创建一个新的 LegacyEntity(通过 new LegacyEntity)并将该实例保存到 DB。

您通过@Configurable 阅读的内容是相反的——您将一个spring bean/服务注入到一个实体中。

【讨论】:

    【解决方案2】:

    我认为我们可以 @Autowire 一个 @Entity 类。但是我们需要在 Entity 类中提到它是 Request 范围

    @Entity
    @Scope(scopeName=WebApplicationContext.SCOPE_REQUEST, proxyMode=ScopedProxyMode.TARGET_CLASS)
    public class LegacyEntity {
    

    我不确定使用 new 关键字是否比自动装配实体类更好?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多