Spring Data:使用另一个实体的布尔字段创建实体(和DB条目)

问题描述 投票:0回答:1

我使用Spring Boot,Spring Data和JPA Rest Repositories和MySQL作为数据库,我想在创建实体时做几件事。

假设我有一个MainChecker实体,并且每当创建/更新MainChecker时,每个实体都需要创建/删除或更新各种Checkers。

这就是我想要做的:

使用Spring Data Repositories将MainChecker实体从前端插入到我的数据库中(因此它将是带参数的JSON)。

这些MainChecker实体中的每一个都将具有布尔字段(以及其他)。

基于这些布尔字段,我想相应地CRUD其他实体。因此,如果MainChecker将某个布尔值更改为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

        }

我有一些想法,但不确定哪一个是一个好方法。

  1. 我应该为每个字段设置@OneToOne关系吗?然后布尔不会做,它必须是对象。如何从布尔值创建对象并从我的JSON字段插入参数?
  2. 制作一个自定义的getter和setter,并在服务层中创建对象(不太喜欢这个选项)

怎么做(以优雅和体面的方式)?

java mysql jpa spring-boot spring-data-rest
1个回答
1
投票

一种选择是使用RepositoryEventHandlers,例如@BeforeCreate@BeforeSave

它允许您在创建/更新对象期间添加一些额外的逻辑,例如,您可以检查这些检查器是真还是假,并在存储库中执行所需的CRUD操作。

documentation中查看更多内容。

© www.soinside.com 2019 - 2024. All rights reserved.