Seam 2 アプリを CDI に移行し、セキュリティのために PicketLink を使用しようとしています。すべての読み取りと調査の後、すべての例で、PicketLink モデルとバックエンド エンティティが1 対 1 でマッピングされているようです。たとえば、Account から AccountEntity へ、Partition から PartitionEntity へ。アイデンティティ モデルを表すエンティティが既に配置されているため、それらを 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 が String ではなく Long である理由に基づいて、次の場所に新しいエンティティを追加しようとしました。
@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) を使用すると、すべてのエンティティを設定することができません。これは可能ですか?