HibernateIdentityObject toIO = safeGet(ctx, toIdentity);
HibernateIdentityObjectRelationshipType type = getHibernateIdentityObjectRelationshipType(ctx, relationshipType);
if (!getSupportedFeatures().isRelationshipTypeSupported(fromIO.getIdentityType(), toIO.getIdentityType(), relationshipType))
{
throw new IdentityException("Relationship not supported. RelationshipType[ " + relationshipType.getName() + " ] " +
"beetween: [ " + fromIO.getIdentityType().getName() + " ] and [ " + toIO.getIdentityType().getName() + " ]");
}
org.hibernate.Query query = getHibernateSession(ctx).createQuery(QUERY_RELATIONSHIP_BY_FROM_TO_TYPE_NAME)
.setParameter("fromIO", fromIO)
.setParameter("toIO", toIO)
.setParameter("typeName", type.getName())
.setParameter("name", name);
List results = query.list();
if (results.size() != 0)
{
throw new IdentityException("Relationship already present");
}
HibernateIdentityObjectRelationship relationship = null;
if (name != null)
{
HibernateIdentityObjectRelationshipName relationshipName =
(HibernateIdentityObjectRelationshipName)getHibernateSession(ctx).
createCriteria(HibernateIdentityObjectRelationshipName.class).add(Restrictions.eq("name", name)).
uniqueResult();
if (relationshipName == null)
{
throw new IdentityException("Relationship name not present in the store");
}
relationship = new HibernateIdentityObjectRelationship(type, fromIO, toIO, relationshipName);
}
else