当我尝试插入我的通知类型对象时,子实体也尝试插入

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

我有一个notificationTypes表,权限表。这些是通过桥表notification_types_permission的帮助链接的。当所有实体都是新的时,它工作正常。我的问题是,当我尝试插入具有现有权限的新notificationType时,该时间权限也会尝试插入新的权限。我的表和实体结构如下。

 CREATE TABLE `notification_types` (
  `Id` BIGINT(16) NOT NULL AUTO_INCREMENT,
  `TypeName` VARCHAR(80) NOT NULL,
  `InsertedDttm` DATETIME NULL,
  `InsertedBy` BIGINT(16) NULL,
  `UpdatedDttm` DATETIME NULL,
  `UpdatedBy` BIGINT(16) NULL,
  PRIMARY KEY (`Id`));

CREATE TABLE `notification_types_permission` (
  `Id` BIGINT(16) NOT NULL AUTO_INCREMENT,
    `NotificationTypes_ID` BIGINT(16) NOT NULL,
    `permissions_ID` int(11) NOT NULL,
  PRIMARY KEY (`Id`), FOREIGN KEY (NotificationTypes_ID)
        REFERENCES `frontoffice`.notification_types(id), FOREIGN KEY (permission_Id)
        REFERENCES `frontoffice`.`permission`(id));
public class NotificationTypes {

    @Id 
    private Long id;
    private String typeName;
    @Temporal(TemporalType.TIMESTAMP)
    private Date insertedDttm;
    private Long insertedBy;
    @Temporal(TemporalType.TIMESTAMP)
    private Date updatedDttm;
    private Long updatedBy;

    @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
    private List<RLPermissions> permissions;
}
java mysql hibernate jpa persistence
3个回答
1
投票
 @OneToMany( fetch = FetchType.EAGER)
 private List<RLPermissions> permissions;

如果不需要删除,更新和插入权限列表操作,请避免使用该关系的级联属性。


0
投票

首先检索新的权限:

Permission p = permissionDao.getPermissionByName("SuperAdmin");

然后像这样添加:

notificationType.notificationTypesPermission.getPermissions().add(p)

0
投票

你已经设置了cascade = CascadeType.PERSIST,它将更新关系的许多方面。对NotificationTypes的任何更改都将更新相应的子实体

CascadeType.PERSIST:表示save()或persist()操作级联到相关实体。


推荐问答