hibernate/hibernate-orm · error · AnnotationException
A '@JoinColumn' for association '{}' references a column nam
Error message
A '@JoinColumn' for association '{}' references a column named '{}' which is not mapped by the target entity '{}' What it means
Error "A '@JoinColumn' for association '{}' references a column named '{}' which is not mapped by the target entity '{}'" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/BinderHelper.java:198
/**
* All the referenced columns must belong to the same table, that is
* {@link #findColumnOwner(PersistentClass, String, MetadataBuildingContext)}
* must return the same value for all of them.
*/
private static void checkColumnInSameTable(
AnnotatedJoinColumns joinColumns,
PersistentClass targetEntity,
PersistentClass associatedEntity,
MetadataBuildingContext context,
AttributeContainer columnOwner) {
if ( joinColumns.hasMappedBy() ) {
// we should only get called for owning side of association
throw new AssertionFailure("no need to create synthetic properties for unowned collections");
}
for ( var column: joinColumns.getJoinColumns() ) {
final var owner = findReferencedColumnOwner( targetEntity, column, context );
if ( owner == null ) {
throw new AnnotationException( "A '@JoinColumn' for association "
+ associationMessage( associatedEntity, joinColumns )
+ " references a column named '" + column.getReferencedColumn()
+ "' which is not mapped by the target entity '"
+ targetEntity.getEntityName() + "'" );
}
if ( owner != columnOwner) {
final var firstColumn = joinColumns.getJoinColumns().get(0);
throw new AnnotationException( "The '@JoinColumn's for association "
+ associationMessage( associatedEntity, joinColumns )
+ " reference columns of different tables mapped by the target entity '"
+ targetEntity.getEntityName() + "' ('" + column.getReferencedColumn() +
"' belongs to a different table to '" + firstColumn.getReferencedColumn() + "'" );
}
}
}
/**
* If the referenced columns correspond to exactly one propertyView on GitHub (pinned to fad1729dce)
Solutions
- Change referencedColumnName of the @JoinColumn to a column actually mapped by the target entity.
- Or map the column on the target entity so the join column can reference it.
When it happens
Trigger: A '@JoinColumn' / 'referencedColumnName' does not line up with the columns mapped by the target entity.
Common situations: Composite foreign keys, associations to entities with secondary tables, or reordered/duplicated referencedColumnName values across multiple @JoinColumn declarations.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/780e840cec231794.
Report an issue: GitHub.