我使用 Spring Boot、Spring Data 和 JPA Rest Repositories 以及 MySQL 作为数据库,并且我想在创建实体时执行几项操作。
假设我有一个 MainChecker 实体,每个实体都有各种检查器,每当创建/更新 MainChecker 时都需要创建/删除或更新这些检查器。
这就是我想做的:
使用 Spring Data Repositories 将 MainChecker 实体从前端插入到我的数据库中(因此它将是带有参数的 JSON)。
每个 MainChecker 实体都将具有 boolean 字段(等等)。
基于这些 boolean 字段,我想相应地增删改查其他实体。 因此,如果 MainChecker 的某些 boolean 值更改为 false(例如 redChecker),我想删除该 redChecker。但其他棋子仍然保留(例如绿色和蓝色)
奖励问题!其中一个字段是一个 JSON,其中包含用于创建这些其他实体的参数。
一个非常简单的示例:
@Entity
@Table(name="master_checker", catalog="checkers")
public class MasterChecker() {
private Long id;
private Boolean blueChecker;
private Boolean greenChecker;
private Boolean redChecker;
// constructors
// getters and setters
}
我有一些想法,但不确定哪一个是最好的方法。
我应该为每个字段添加 @OneToOne 关系吗?那么 boolean 值就不行了,它必须是对象。如何从 boolean 值创建对象并从 JSON 字段插入参数?
制作自定义的 getter 和 setter,并在服务层创建对象(不太喜欢这个选项)
如何做到这一点(以优雅而得体的方式)?
最佳答案
一种选择是使用 RepositoryEventHandlers,例如@BeforeCreate
和 @BeforeSave
。
它将允许您在创建/更新对象期间添加一些额外的逻辑,您可以例如检查这些检查器是对还是错,并在存储库中执行所需的 CRUD 操作。
查看更多documentation .
关于java - Spring 数据 : Create entities (and DB entries) using boolean fields of another entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46177888/