既存のJPAエンティティをPicketLinkにマップする方法

パトリック

Seam 2アプリをCDIに移行し、セキュリティのためにPicketLinkを使用しようとしています。すべての読み取りと調査の結果、すべての例でPicketLinkモデルとバックエンドエンティティの間に1対1のマッピングが行わているようです。例:Account to AccountEntity、Partition toPartitionEntity。IDモデルを表すエンティティがすでに配置されているため、それらをPicketLinkにマップしようとしています。これが私が持っているものです:

@MappedSuperClass
public class ModelEntityBase implement Serializable {
    @Id @Generated
    Long id;
    Date creationDate;
}

@Entity
public Account extends ModelEntityBase {
    String username;
    String passwordHash;
    @OneToOne(mappedBy = "account")
    Person person;
}

@Entity
public Person extends ModelEntityBase {
    String name;
    String email;
    @OneToOne
    @JoinColumn(name = "account_id")
    Account account;
}

PicketLinkの単一のIDモデルを表す2つのエンティティ(およびスーパークラス)。たとえば、ステレオタイプのユーザー。

これに基づいて、IdentityType idがLongではなくStringである理由に基づいて、次の場所に新しいエンティティを追加しようとしました。

@Entity
@IdentityManaged(BaseIdentityType.class);
public class IdentityTypeEntity implement Serializble {
    @Id @Identifier
    private String id;

    @OneToOne(optional = false, mappedBy = "identityType")
    @OwnerReference
    private Account account;

    @IdentityClass
    private String typeName;

    @ManyToOne @OwnerReference
    private PartitionEntity partition;
}

アノテーションクラスとモデルクラスでいくつかの異なる方法を試しました。しかし、IdentityManager.add(myUserModel)を使用すると、すべてのエンティティにデータを入力することができません。これも可能ですか?

パトリック

Pedro(PicketLink Dev)から助けを得ました。他の人を助けるためにここに答えを投稿してください。これは私が使用することになったモデルクラスです。

@IdentityStereotype(USER)
public class User extends AbstractAttributedType implements Account {
    @AttributeProperty
    private Account accountEntity;
    @AttributeProperty
    @StereotypeProperty(IDENTITY_USER_NAME)
    @Unique
    private String username;
    @AttributeProperty
    private boolean enabled;
    @AttributeProperty
    private Date createdDate;
    @AttributeProperty
    private Date expiryDate;
    @AttributeProperty
    private Partition partition;
    // getter and setter omitted
}

そして、このモデルにマップする新しいエンティティを作成しました。

public class IdentityTypeEntity implements Serializable {
    @Id
    @Identifier
    private String id;

    @OneToOne(optional = false, mappedBy = "identityType",
        cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @AttributeValue
    // @NotNull
    private HAccount accountEntity;

    @IdentityClass
    private String typeName;

    @ManyToOne
    @OwnerReference
    private PartitionEntity partition;

    @AttributeValue
    private String username;

    @AttributeValue
    // @Transient
    private boolean enabled;

    @AttributeValue
    private Date createdDate;

    @AttributeValue
    private Date expiryDate;
}

PLは、@ AttributePropertyを使用してプロパティを@AttributeValueを使用してエンティティプロパティにマップできます。ただし、マップできるのは1つのエンティティのみです。したがって、UserとそのプロパティをAccountとPersonにマッピングする方法はありません。ただし、モデルにエンティティ(私の場合はaccountEntity)を含めることができます。PLがこれらを必要とするため、新しいIdentityTypeEntityと既存のAccountエンティティ(username、eanbled、createdDate)のいくつかのフィールドも複製する必要があります。@PrePersistなどを使用して同期します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JPAエンティティをマップに変換する

分類Dev

JPA、マップのエンティティタイプの値を主キーに追加する方法

分類Dev

JPA:別のエンティティから1つのプロパティのみをマップする方法

分類Dev

TIMESTAMP列をZonedDateTime JPAエンティティプロパティにマップする方法

分類Dev

JPA-2つの@ManyToOneを同じ親エンティティにマップする方法

分類Dev

実行時にJPAでエンティティのマッピングテーブル名を取得する方法

分類Dev

DTOを複数のエンティティにマップする方法は?

分類Dev

JPAで結合クエリを非エンティティークラスにマップする方法は?

分類Dev

キャメルのプロセッサに複数のjpaエンティティを処理する方法

分類Dev

Hibernate / JPAは、ネイティブクエリの結果を非エンティティ保持エンティティにマップします

分類Dev

エンティティを既存のエンティティに追加する方法MVC2 EF

分類Dev

子エンティティのフィールドに基づいてHazelcastマップからエンティティをフェッチする方法

分類Dev

どのようにJPAやHibernateのを使用してJavaエンティティプロパティにMySQLのJSON列をマップするために -

分類Dev

JPAエンティティマネージャーで特定のエンティティ/行を更新する方法

分類Dev

部分クラスを使用してEntityFramework 5エンティティを拡張し、既存の他のエンティティにマップします

分類Dev

分離されたエンティティまたは新しいエンティティをhibernate / jpaベストプラクティスの質問の既存のエンティティとマージする

分類Dev

JPAエンティティーIDをOracleとMySQLの両方で機能するようにマップする方法

分類Dev

1つのエンティティを別のテーブルにマップする方法

分類Dev

同じJPAエンティティを他のJPAエンティティに複数回マッピングする

分類Dev

データベースルックアップをjpaエンティティにマッピングする

分類Dev

Springでフォームをエンティティにマップする方法

分類Dev

jpaを使用して1つの単純なクラス(エンティティではない)をdto(Entity)クラスにマップする方法

分類Dev

エンティティを特定のサーバーからテーブルにマップする方法

分類Dev

エンティティjpaでVarchar列タイプを整数にマップする

分類Dev

同じタイプの複数のエンティティをマッピングするHibernate JPA

分類Dev

2つの列を同じエンティティに適切にマップする方法

分類Dev

Spring Data JPAを使用して既存の親エンティティに子エンティティを追加するにはどうすればよいですか?

分類Dev

JPAでこれらのエンティティをマッピングする方法

分類Dev

エンティティにマップの関連付けを実装する方法

Related 関連記事

  1. 1

    JPAエンティティをマップに変換する

  2. 2

    JPA、マップのエンティティタイプの値を主キーに追加する方法

  3. 3

    JPA:別のエンティティから1つのプロパティのみをマップする方法

  4. 4

    TIMESTAMP列をZonedDateTime JPAエンティティプロパティにマップする方法

  5. 5

    JPA-2つの@ManyToOneを同じ親エンティティにマップする方法

  6. 6

    実行時にJPAでエンティティのマッピングテーブル名を取得する方法

  7. 7

    DTOを複数のエンティティにマップする方法は?

  8. 8

    JPAで結合クエリを非エンティティークラスにマップする方法は?

  9. 9

    キャメルのプロセッサに複数のjpaエンティティを処理する方法

  10. 10

    Hibernate / JPAは、ネイティブクエリの結果を非エンティティ保持エンティティにマップします

  11. 11

    エンティティを既存のエンティティに追加する方法MVC2 EF

  12. 12

    子エンティティのフィールドに基づいてHazelcastマップからエンティティをフェッチする方法

  13. 13

    どのようにJPAやHibernateのを使用してJavaエンティティプロパティにMySQLのJSON列をマップするために -

  14. 14

    JPAエンティティマネージャーで特定のエンティティ/行を更新する方法

  15. 15

    部分クラスを使用してEntityFramework 5エンティティを拡張し、既存の他のエンティティにマップします

  16. 16

    分離されたエンティティまたは新しいエンティティをhibernate / jpaベストプラクティスの質問の既存のエンティティとマージする

  17. 17

    JPAエンティティーIDをOracleとMySQLの両方で機能するようにマップする方法

  18. 18

    1つのエンティティを別のテーブルにマップする方法

  19. 19

    同じJPAエンティティを他のJPAエンティティに複数回マッピングする

  20. 20

    データベースルックアップをjpaエンティティにマッピングする

  21. 21

    Springでフォームをエンティティにマップする方法

  22. 22

    jpaを使用して1つの単純なクラス(エンティティではない)をdto(Entity)クラスにマップする方法

  23. 23

    エンティティを特定のサーバーからテーブルにマップする方法

  24. 24

    エンティティjpaでVarchar列タイプを整数にマップする

  25. 25

    同じタイプの複数のエンティティをマッピングするHibernate JPA

  26. 26

    2つの列を同じエンティティに適切にマップする方法

  27. 27

    Spring Data JPAを使用して既存の親エンティティに子エンティティを追加するにはどうすればよいですか?

  28. 28

    JPAでこれらのエンティティをマッピングする方法

  29. 29

    エンティティにマップの関連付けを実装する方法

ホットタグ

アーカイブ