}
}
// One to many
for (PropertyInfo propertyInfo : info.getProperties(OneToMany.class)) {
OneToMany oneToManyAnn = propertyInfo.getAnnotation(OneToMany.class);
if (propertyInfo instanceof MultiValuedPropertyInfo) {
MultiValuedPropertyInfo multiValuedProperty = (MultiValuedPropertyInfo)propertyInfo;
//
if (multiValuedProperty instanceof MapPropertyInfo) {
MapPropertyInfo mapProperty = (MapPropertyInfo)multiValuedProperty;
if (!(mapProperty.getKeyValue() instanceof SimpleValueInfo)) {
throw new IllegalStateException("Wrong key value type " + mapProperty.getKeyValue());
}
SimpleValueInfo svi = (SimpleValueInfo)mapProperty.getKeyValue();
if (svi.getSimpleType() != SimpleType.STRING) {
throw new IllegalStateException();
}
}
//
ValueInfo beanElementType = multiValuedProperty.getElementValue();
if (beanElementType instanceof BeanValueInfo) {
BeanValueInfo bvi = (BeanValueInfo)beanElementType;
//
OneToManyMapping mapping;
RelationshipType type = oneToManyAnn.type();
if (type == RelationshipType.HIERARCHIC) {
MappedBy mappedBy = propertyInfo.getAnnotation(MappedBy.class);
if (mappedBy != null) {
throw new IllegalStateException();
}