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

Java Spring数据:使用另一个实体的布尔字段创建实体(和DB条目),java,mysql,jpa,spring-boot,spring-data-rest,Java,Mysql,Jpa,Spring Boot,Spring Data Rest,我使用Spring Boot、Spring Data和JPA Rest存储库以及MySQL作为数据库,在创建实体时,我想做几件事 假设我有一个MainChecker实体,每个实体都有各种各样的检查器,需要在创建/更新MainChecker时创建/删除或更新这些检查器 这就是我想做的: @Entity @Table(name="master_checker", catalog="checkers") public class MasterChecker() { p

我使用Spring Boot、Spring Data和JPA Rest存储库以及MySQL作为数据库,在创建实体时,我想做几件事

假设我有一个MainChecker实体,每个实体都有各种各样的检查器,需要在创建/更新MainChecker时创建/删除或更新这些检查器

这就是我想做的:

@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

        }
使用Spring数据存储库将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

        }
我有一些想法,但不确定哪一个是好办法

  • 我应该为每个字段设置@OneToOne关系吗?那么布尔值就不行了,它必须是对象。如何从布尔值创建对象并从JSON字段插入参数

  • 制作一个定制的getter和setter,并在服务层中创建对象(不太喜欢这个选项)


  • 如何做到这一点(以优雅而得体的方式)?

    一个选项是使用RepositoryEventHandler,例如
    @BeforeCreate
    @BeforeSave

    它将允许您在创建/更新对象的过程中添加一些额外的逻辑,例如,您可以检查这些检查器是否正确,并在存储库中执行所需的CRUD操作


    有关更多信息,请参见。

    您是否查看过RepositoryEventHandler,例如@BeforeCreate和@BeforeSave?这些将允许您在创建/更新对象的过程中添加一些额外的逻辑,例如,您可以检查这些检查器并在存储库中执行所需的CRUD操作如何做到这一点(以优雅而得体的方式)?通过在
    main Checker
    Checker
    实体之间建立
    @OneToMany
    @ManyToMany
    关系来实现IMHO。这比拥有固定数量的布尔值要灵活得多。@dic19我只收到一个带有布尔值的json。基于此,我需要插入或删除其他entities@AdamKučera实际上我还没有看到它。现在来看,谢谢…@AdamKučera,我实际上使用了这些处理程序,并最终围绕它们构建了我的逻辑。如果你把你的评论作为回答,我会欣然接受。干杯