Skip to content

Instantly share code, notes, and snippets.

@tmvolpato
Last active October 12, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tmvolpato/96ed430c0b2d9cb6a567 to your computer and use it in GitHub Desktop.
Save tmvolpato/96ed430c0b2d9cb6a567 to your computer and use it in GitHub Desktop.
mapping relationship
@RelationshipStereotype(GROUP_MEMBERSHIP)
public class GroupMembership extends AbstractAttributedType implements Relationship{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final RelationshipQueryParameter GROUP = RELATIONSHIP_QUERY_ATTRIBUTE.byName("group");
public static final RelationshipQueryParameter MEMBER = RELATIONSHIP_QUERY_ATTRIBUTE.byName("member");
@StereotypeProperty(RELATIONSHIP_GROUP_MEMBERSHIP_GROUP)
private Group group;
@InheritsPrivileges("group")
@StereotypeProperty(RELATIONSHIP_GROUP_MEMBERSHIP_MEMBER)
private Account member;
public GroupMembership() {}
public GroupMembership(Group group, Account member){
this.group = group;
this.member = member;
}
//getters and setters
--------------------------------------------------------
@Entity
@Table(name="GROUP_MEMBERSHIPS")
@IdentityManaged(GroupMembership.class)
public class GroupMembershipTypeEntity extends RelationshipTypeEntity{
/**
*
*/
private static final long serialVersionUID = 1L;
}
-------------------------------------------------------------
@IdentityStereotype(GROUP)
public class Group extends AbstractIdentityType {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final QueryParameter NAME = QUERY_ATTRIBUTE.byName("name");
public static final QueryParameter PARENT = QUERY_ATTRIBUTE.byName("parent");
@Unique
@AttributeProperty
@NotEmpty
@StereotypeProperty(IDENTITY_GROUP_NAME)
private String name;
@AttributeProperty
@InheritsPrivileges
private Group parent;
@Transient
private List<Grant> grants = new ArrayList<>();
//getters and setters
-----------------------------------------------------------
@Entity
@Table(name = "RELATIONSHIPS")
@IdentityManaged(Relationship.class)
@Inheritance(strategy = InheritanceType.JOINED)
public class RelationshipTypeEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Identifier
@Column(name = "ID", unique = true)
private String id;
@RelationshipClass
@Column(name = "TYPE_NAME")
private String typeName;
//getters and setters
-------------------------------------------------------------------
@Entity
@Table(name = "GROUPS")
@IdentityManaged(Group.class)
public class GroupTypeEntity extends AbstractIdentityTypeEntity{
/**
*
*/
private static final long serialVersionUID = 1L;
@AttributeValue
@Column(name = "NAME")
private String name;
@ManyToOne
@AttributeValue
@JoinColumn(name = "PARENT_ID")
private GroupTypeEntity parent;
@ManyToOne
@OwnerReference
@JoinColumn(name = "PARTITION_ID")
private PartitionTypeEntity partition;
//getters and setters
-------------------------------------------------------------------------
@Entity
@IdentityManaged(Relationship.class)
@Table(name = "IDENTITY_RELATIONSHIPS")
public class RelationshipIdentityTypeEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", unique = true)
private Long id;
@RelationshipDescriptor
@Column(name = "DESCRIPTOR")
private String descriptor;
@RelationshipMember
@Column(name = "IDENTITY_TYPE")
private String identityType;
@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@OwnerReference
@JoinColumn(name = "OWNER_ID")
private RelationshipTypeEntity owner;
//getters and setters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment