【发布时间】:2018-02-15 23:27:09
【问题描述】:
在 Spring Boot 项目中,我有一个 JPA 实体,如下所示:
@Entity
public class Account {
}
然后我有了查询数据库的存储库:
public interface AccountRepository extends JpaRepository<Account, UUID> {
}
在应用程序和测试中,通过以下方式获取存储库很容易:
@Autowired
private AccountRepository accountRepository;
如何在 Account 类的方法中获取存储库?我试过@Autowired,但没用。
对于那些争论设计的人,我的问题与设计无关。我已经在 Ruby 和 Rails 以及 Clojure 中使用 HugSQL 编写了这段代码,它是独立且简洁的:创建新记录时,我还会生成一个紧凑的唯一字母数字 ID。在 Ruby on Rails 中,我将其作为库发布:https://github.com/pupeno/random_unique_id
【问题讨论】:
-
您确定没有比从实体访问存储库更好的解决方案吗?
-
@davioooh:是的,我很确定。实体在保存前需要生成一些数据,这些数据依赖于现有记录。
-
好的...我认为实体应该不知道存储库。我个人更喜欢在服务层实现额外的逻辑......但如果确定,那就去吧......
-
@Pablo 通常你会将额外的逻辑放在应用程序的服务层中。但如果你真的需要这个,我想你可以试试
@EntityListeners和@PrePersistconcretepage.com/java/jpa/…
标签: java spring jpa spring-boot