java - Spring 数据 : Create entities (and DB entries) using boolean fields of another entity

标签 java mysql jpa spring-boot spring-data-rest

我使用 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

        }

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

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

  2. 制作自定义的 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/

相关文章:

mysql - Docker MySQL 不使用数据填充数据库

mysql - 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment](尝试使用EntityManager)

java - 使用 JSF、JPA 和 DAO。没有 Spring ?

java - 如何在 Eclipse E4 应用程序中禁用或启用 MMenu(不是 MMenuItem)

java - Errai 中@Default 字段的模糊解析

java - JList - 单击已选择的项目时取消选择

mysql - 如何在这种类型的条件下编写 SQL 查询

php - 显示 DB 的价格

jpa - Guice Persist 是否提供事务范围或应用程序管理的 EntityManager?

java - 行范围过滤器与子字符串比较器 - Hbase