Я пытаюсь перенести приложение Seam 2 в CDI и использовать PicketLink для обеспечения безопасности. После всех чтений и исследований кажется, что все примеры имеют одно из сопоставлений между моделью PicketLink и объектной базой. например Account to AccountEntity, PartitionEntity. Поскольку у меня уже есть сущности, представляющие модель идентичности, я застрял в попытке сопоставить их с PicketLink. Вот что у меня есть:Как сопоставить существующие объекты JPA с 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, например, стерео тип пользователя.
Исходя из этого why IdentityType id is String not 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) я просто не могу заставить его заполнять все сущности. Возможно ли это?