【问题标题】:Hibernate - populating autowired fields on load [duplicate]Hibernate - 在加载时填充自动装配字段[重复]
【发布时间】:2018-02-06 15:24:14
【问题描述】:

我有一个带有多个字段和 2 个临时字段的原型实体 bean。其中一个也是原型,另一个是单例。

@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Entity
@Table(name = "tableA")
class A{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String name;

    @Autowired
    @Transient
    private CacheA cache; //Prototype bean for caching some calc results

    @Autowired
    @Transient
    private ServiceA service; //Singleton service bean

}

在我尝试从数据库中读取实例之前,一切正常,因为当 Hibernate 创建实例时,Spring 不会自动装配任何字段。

一些附加信息:我正在使用由 spring-boot 自动配置的 CrudRepository 和休眠。

我该如何正确解决这种情况?这是预期的行为,还是我应该为休眠进行一些额外的配置以使用弹簧上下文?

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

    我相信,你的问题和这个问题一样:

    Bean injection inside a JPA @Entity

    看看这个。我相信,它会有所帮助。

    【讨论】:

    • 这似乎是唯一的方法,至少我找到的只有一个。但我认为,如果我将所有逻辑正确地分离为服务并使实体 pojos,它将提供更清洁的解决方案。老实说,我确信应该有某种方法可以让 hibernate 从上下文中获取 bean。无论如何,谢谢,我会再等一会儿,也许有人知道不同的解决方案。
    • 是的,当然。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2016-12-16
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多