2017-11-08 2 views
0

私は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; 
} 

答えて

0

最初の新しいアクセス権を取得します。

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

を次に、このようにそれを追加します。

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

私の問題は既存の許可でも新しいものとして追加しようとしています。 – Araf

0

あなたは関係の多くの側面を更新するカスケード= CascadeType.PERSISTを設定しています。 NotificationTypeを変更すると、対応する子エンティティが更新されます。

CascadeType.PERSIST:save()またはpersist()操作が関連するエンティティにカスケードすることを意味します。

関連する問題