use of jakarta.persistence.MapKeyJoinColumn in project hibernate-orm by hibernate.
the class AnnotationBinder method mapKeyColumns.
private static JoinColumn[] mapKeyColumns(PropertyHolder propertyHolder, PropertyData inferredData, EntityBinder entityBinder, MetadataBuildingContext context, XProperty property, CollectionBinder collectionBinder, Comment comment) {
Column[] keyColumns = property.isAnnotationPresent(MapKeyColumn.class) ? new Column[] { new MapKeyColumnDelegator(property.getAnnotation(MapKeyColumn.class)) } : null;
AnnotatedColumn[] mapColumns = buildColumnsFromAnnotations(keyColumns, comment, Nullability.FORCED_NOT_NULL, propertyHolder, inferredData, "_KEY", entityBinder.getSecondaryTables(), context);
collectionBinder.setMapKeyColumns(mapColumns);
JoinColumn[] joinKeyColumns = null;
if (property.isAnnotationPresent(MapKeyJoinColumns.class)) {
final MapKeyJoinColumn[] mapKeyJoinColumns = property.getAnnotation(MapKeyJoinColumns.class).value();
joinKeyColumns = new JoinColumn[mapKeyJoinColumns.length];
int index = 0;
for (MapKeyJoinColumn joinColumn : mapKeyJoinColumns) {
joinKeyColumns[index] = new MapKeyJoinColumnDelegator(joinColumn);
index++;
}
if (property.isAnnotationPresent(MapKeyJoinColumn.class)) {
throw new AnnotationException("@MapKeyJoinColumn and @MapKeyJoinColumns used on the same property: " + BinderHelper.getPath(propertyHolder, inferredData));
}
} else if (property.isAnnotationPresent(MapKeyJoinColumn.class)) {
joinKeyColumns = new JoinColumn[] { new MapKeyJoinColumnDelegator(property.getAnnotation(MapKeyJoinColumn.class)) };
}
return joinKeyColumns;
}
use of jakarta.persistence.MapKeyJoinColumn in project hibernate-orm by hibernate.
the class JPAXMLOverriddenAnnotationReader method buildMapKeyJoinColumns.
private MapKeyJoinColumn[] buildMapKeyJoinColumns(List<JaxbMapKeyJoinColumn> elements) {
List<MapKeyJoinColumn> joinColumns = new ArrayList<>();
if (elements != null) {
for (JaxbMapKeyJoinColumn element : elements) {
AnnotationDescriptor column = new AnnotationDescriptor(MapKeyJoinColumn.class);
copyAttribute(column, "name", element.getName(), false);
copyAttribute(column, "referenced-column-name", element.getReferencedColumnName(), false);
copyAttribute(column, "unique", element.isUnique(), false);
copyAttribute(column, "nullable", element.isNullable(), false);
copyAttribute(column, "insertable", element.isInsertable(), false);
copyAttribute(column, "updatable", element.isUpdatable(), false);
copyAttribute(column, "column-definition", element.getColumnDefinition(), false);
copyAttribute(column, "table", element.getTable(), false);
joinColumns.add(AnnotationFactory.create(column));
}
}
return joinColumns.toArray(new MapKeyJoinColumn[joinColumns.size()]);
}
use of jakarta.persistence.MapKeyJoinColumn in project hibernate-orm by hibernate.
the class JPAXMLOverriddenAnnotationReader method getMapKeyJoinColumns.
private void getMapKeyJoinColumns(List<Annotation> annotationList, List<JaxbMapKeyJoinColumn> elements) {
MapKeyJoinColumn[] joinColumns = buildMapKeyJoinColumns(elements);
if (joinColumns.length > 0) {
AnnotationDescriptor ad = new AnnotationDescriptor(MapKeyJoinColumns.class);
ad.setValue("value", joinColumns);
annotationList.add(AnnotationFactory.create(ad));
}
}
use of jakarta.persistence.MapKeyJoinColumn in project hibernate-orm by hibernate.
the class Ejb3XmlElementCollectionTest method testSingleMapKeyJoinColumn.
/**
* When there's a single map key join column, we still wrap it with a
* MapKeyJoinColumns annotation.
*/
@Test
public void testSingleMapKeyJoinColumn() throws Exception {
reader = getReader(Entity3.class, "field1", "element-collection.orm14.xml");
assertAnnotationPresent(ElementCollection.class);
assertAnnotationNotPresent(MapKey.class);
assertAnnotationNotPresent(MapKeyClass.class);
assertAnnotationNotPresent(MapKeyTemporal.class);
assertAnnotationNotPresent(MapKeyEnumerated.class);
assertAnnotationNotPresent(MapKeyColumn.class);
assertAnnotationPresent(MapKeyJoinColumns.class);
assertAnnotationNotPresent(MapKeyJoinColumn.class);
MapKeyJoinColumns joinColumnsAnno = reader.getAnnotation(MapKeyJoinColumns.class);
MapKeyJoinColumn[] joinColumns = joinColumnsAnno.value();
assertEquals(1, joinColumns.length);
assertEquals("col1", joinColumns[0].name());
}
use of jakarta.persistence.MapKeyJoinColumn in project hibernate-orm by hibernate.
the class Ejb3XmlOneToManyTest method testSingleMapKeyJoinColumn.
/**
* When there's a single map key join column, we still wrap it with a
* MapKeyJoinColumns annotation.
*/
@Test
public void testSingleMapKeyJoinColumn() throws Exception {
reader = getReader(Entity3.class, "field1", "one-to-many.orm14.xml");
assertAnnotationPresent(OneToMany.class);
assertAnnotationNotPresent(MapKey.class);
assertAnnotationNotPresent(MapKeyClass.class);
assertAnnotationNotPresent(MapKeyTemporal.class);
assertAnnotationNotPresent(MapKeyEnumerated.class);
assertAnnotationNotPresent(MapKeyColumn.class);
assertAnnotationPresent(MapKeyJoinColumns.class);
assertAnnotationNotPresent(MapKeyJoinColumn.class);
MapKeyJoinColumns joinColumnsAnno = reader.getAnnotation(MapKeyJoinColumns.class);
MapKeyJoinColumn[] joinColumns = joinColumnsAnno.value();
assertEquals(1, joinColumns.length);
assertEquals("col1", joinColumns[0].name());
}
Aggregations