HHH-6503 - Develop Set-style plural attribute support for new metamodel
This commit is contained in:
parent
859b61a7c4
commit
01604bef94
|
@ -30,10 +30,10 @@ import org.hibernate.metamodel.binding.AbstractCollectionElement;
|
||||||
import org.hibernate.metamodel.binding.AbstractPluralAttributeBinding;
|
import org.hibernate.metamodel.binding.AbstractPluralAttributeBinding;
|
||||||
import org.hibernate.metamodel.binding.AttributeBinding;
|
import org.hibernate.metamodel.binding.AttributeBinding;
|
||||||
import org.hibernate.metamodel.binding.BasicCollectionElement;
|
import org.hibernate.metamodel.binding.BasicCollectionElement;
|
||||||
|
import org.hibernate.metamodel.binding.CollectionElementNature;
|
||||||
import org.hibernate.metamodel.binding.EntityBinding;
|
import org.hibernate.metamodel.binding.EntityBinding;
|
||||||
import org.hibernate.metamodel.binding.EntityDiscriminator;
|
import org.hibernate.metamodel.binding.EntityDiscriminator;
|
||||||
import org.hibernate.metamodel.binding.HibernateTypeDescriptor;
|
import org.hibernate.metamodel.binding.HibernateTypeDescriptor;
|
||||||
import org.hibernate.metamodel.binding.PluralAttributeBinding;
|
|
||||||
import org.hibernate.metamodel.binding.SingularAttributeBinding;
|
import org.hibernate.metamodel.binding.SingularAttributeBinding;
|
||||||
import org.hibernate.metamodel.domain.SingularAttribute;
|
import org.hibernate.metamodel.domain.SingularAttribute;
|
||||||
import org.hibernate.metamodel.relational.Datatype;
|
import org.hibernate.metamodel.relational.Datatype;
|
||||||
|
@ -103,9 +103,9 @@ class HibernateTypeResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String determineTypeName(HibernateTypeDescriptor hibernateTypeDescriptor) {
|
private static String determineTypeName(HibernateTypeDescriptor hibernateTypeDescriptor) {
|
||||||
return hibernateTypeDescriptor.getExplicitTypeName() != null ?
|
return hibernateTypeDescriptor.getExplicitTypeName() != null
|
||||||
hibernateTypeDescriptor.getExplicitTypeName() :
|
? hibernateTypeDescriptor.getExplicitTypeName()
|
||||||
hibernateTypeDescriptor.getJavaTypeName();
|
: hibernateTypeDescriptor.getJavaTypeName();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Properties getTypeParameters(HibernateTypeDescriptor hibernateTypeDescriptor) {
|
private static Properties getTypeParameters(HibernateTypeDescriptor hibernateTypeDescriptor) {
|
||||||
|
@ -148,7 +148,9 @@ class HibernateTypeResolver {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Type resolvedType;
|
Type resolvedType;
|
||||||
String typeName = determineTypeName( attributeBinding.getHibernateTypeDescriptor() );
|
// do NOT look at java type...
|
||||||
|
//String typeName = determineTypeName( attributeBinding.getHibernateTypeDescriptor() );
|
||||||
|
String typeName = attributeBinding.getHibernateTypeDescriptor().getExplicitTypeName();
|
||||||
if ( typeName != null ) {
|
if ( typeName != null ) {
|
||||||
resolvedType =
|
resolvedType =
|
||||||
metadata.getTypeResolver()
|
metadata.getTypeResolver()
|
||||||
|
@ -158,7 +160,8 @@ class HibernateTypeResolver {
|
||||||
getTypeParameters( attributeBinding.getHibernateTypeDescriptor() ),
|
getTypeParameters( attributeBinding.getHibernateTypeDescriptor() ),
|
||||||
attributeBinding.getAttribute().getName(),
|
attributeBinding.getAttribute().getName(),
|
||||||
attributeBinding.getReferencedPropertyName(),
|
attributeBinding.getReferencedPropertyName(),
|
||||||
attributeBinding.isEmbedded()
|
attributeBinding.getCollectionElement().getCollectionElementNature() ==
|
||||||
|
CollectionElementNature.COMPOSITE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -180,14 +183,15 @@ class HibernateTypeResolver {
|
||||||
return typeFactory.set(
|
return typeFactory.set(
|
||||||
attributeBinding.getAttribute().getName(),
|
attributeBinding.getAttribute().getName(),
|
||||||
attributeBinding.getReferencedPropertyName(),
|
attributeBinding.getReferencedPropertyName(),
|
||||||
attributeBinding.isEmbedded()
|
attributeBinding.getCollectionElement().getCollectionElementNature() == CollectionElementNature.COMPOSITE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
case BAG: {
|
case BAG: {
|
||||||
return typeFactory.set(
|
return typeFactory.bag(
|
||||||
attributeBinding.getAttribute().getName(),
|
attributeBinding.getAttribute().getName(),
|
||||||
attributeBinding.getReferencedPropertyName(),
|
attributeBinding.getReferencedPropertyName(),
|
||||||
attributeBinding.isEmbedded()
|
attributeBinding.getCollectionElement()
|
||||||
|
.getCollectionElementNature() == CollectionElementNature.COMPOSITE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
|
Loading…
Reference in New Issue