【问题标题】:When i try to insert my notification type object then child entity also tries to insert当我尝试插入通知类型对象时,子实体也尝试插入
【发布时间】:2018-04-21 07:28:49
【问题描述】:

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

 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


    【解决方案1】:
     @OneToMany( fetch = FetchType.EAGER)
     private List<RLPermissions> permissions;
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        首先获取新的权限:

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

        然后像这样添加它:

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

        【讨论】:

        • 我的问题是现有权限也尝试添加为新权限。
        猜你喜欢
        • 1970-01-01
        • 2019-05-22
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多