mirror of
https://github.com/hibernate/hibernate-orm
synced 2025-02-27 22:39:13 +00:00
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.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 @@ private Type determineSingularTypeFromDescriptor(HibernateTypeDescriptor hiberna
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 @@ private void resolvePluralAttributeTypeInformation(AbstractPluralAttributeBindin
|
|||||||
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 @@ private void resolvePluralAttributeTypeInformation(AbstractPluralAttributeBindin
|
|||||||
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 @@ private Type determineDefaultCollectionInformation(AbstractPluralAttributeBindin
|
|||||||
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…
x
Reference in New Issue
Block a user