Spring 数据:使用另一个实体的布尔字段创建实体(和数据库条目)
Spring Data: Create entities (and DB entries) using boolean fields of another entity
我正在使用 Spring Boot、Spring Data 和 JPA Rest Repositories 以及 MySQL 作为数据库,我想在创建实体时做几件事。
假设我有一个 MainChecker 实体,每个实体都有各种 Checker,需要 created/deleted 或在 MainChecker 为 created/updated.
时更新
这就是我想要做的:
使用 Spring 数据存储库将 MainChecker 实体从前端插入到我的数据库中(因此它将是一个带参数的 JSON)。
这些 MainChecker 实体中的每一个都将具有布尔字段(以及其他字段)。
基于这些布尔字段,我想相应地增删改查其他实体。
因此,如果 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并在服务层创建对象(不太喜欢这个选项)
如何做到这一点(以优雅和体面的方式)?
一种选择是使用 RepositoryEventHandlers,例如@BeforeCreate
和 @BeforeSave
.
它将允许您在对象的 creation/update 期间添加一些额外的逻辑,例如,您可以检查这些检查器是真还是假,并在存储库中执行所需的 CRUD 操作。
在 documentation 中查看更多信息。
我正在使用 Spring Boot、Spring Data 和 JPA Rest Repositories 以及 MySQL 作为数据库,我想在创建实体时做几件事。
假设我有一个 MainChecker 实体,每个实体都有各种 Checker,需要 created/deleted 或在 MainChecker 为 created/updated.
时更新这就是我想要做的:
使用 Spring 数据存储库将 MainChecker 实体从前端插入到我的数据库中(因此它将是一个带参数的 JSON)。
这些 MainChecker 实体中的每一个都将具有布尔字段(以及其他字段)。
基于这些布尔字段,我想相应地增删改查其他实体。 因此,如果 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并在服务层创建对象(不太喜欢这个选项)
如何做到这一点(以优雅和体面的方式)?
一种选择是使用 RepositoryEventHandlers,例如@BeforeCreate
和 @BeforeSave
.
它将允许您在对象的 creation/update 期间添加一些额外的逻辑,例如,您可以检查这些检查器是真还是假,并在存储库中执行所需的 CRUD 操作。
在 documentation 中查看更多信息。