hibernate/hibernate-orm · error · HibernateException
Primary key referenced an unknown entity: {}
Error message
Primary key referenced an unknown entity: {} What it means
Error "Primary key referenced an unknown entity: {}" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java:1788
secondPasses.clear();
}
}
private void processFkSecondPassesInOrder() {
if ( fkSecondPassList == null || fkSecondPassList.isEmpty() ) {
processSecondPasses( secondaryTableFromAnnotationSecondPassesList );
}
else {
// split FkSecondPass instances into primary key and non primary key FKs.
// While doing so build a map of class names to FkSecondPass instances depending on this class.
final Map<String, Set<FkSecondPass>> isADependencyOf = new HashMap<>();
final List<FkSecondPass> endOfQueueFkSecondPasses = new ArrayList<>( fkSecondPassList.size() );
for ( var fkSecondPass : fkSecondPassList ) {
if ( fkSecondPass.isInPrimaryKey() ) {
final String referencedEntityName = fkSecondPass.getReferencedEntityName();
final var classMapping = getEntityBinding( referencedEntityName );
if ( classMapping == null ) {
throw new HibernateException( "Primary key referenced an unknown entity: "
+ referencedEntityName );
}
final String dependentTable = classMapping.getTable().getQualifiedTableName().render();
if ( !isADependencyOf.containsKey( dependentTable ) ) {
isADependencyOf.put( dependentTable, new HashSet<>() );
}
isADependencyOf.get( dependentTable ).add( fkSecondPass );
}
else {
endOfQueueFkSecondPasses.add( fkSecondPass );
}
}
// using the isADependencyOf map we order the FkSecondPass recursively instances into the right order for processing
final List<FkSecondPass> orderedFkSecondPasses = new ArrayList<>( fkSecondPassList.size() );
for ( String tableName : isADependencyOf.keySet() ) {
buildRecursiveOrderedFkSecondPasses( orderedFkSecondPasses, isADependencyOf, tableName, tableName );
}View on GitHub (pinned to fad1729dce)
Solutions
- Make sure the entity referenced as the primary key join target is included in the persistence unit mappings.
- Check @PrimaryKeyJoinColumn/@MapsId references for correct entity names.
- Verify the referenced entity class is scanned (correct package in persistence.xml or addAnnotatedClass call).
When it happens
Trigger: A mapping references an entity or collection role that is not known at that point.
Common situations: hbm.xml <key> property-refs or jakarta.persistence cache overrides naming entities/roles that are unmapped or not root entities.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/cf980b506cc8f4f4.
Report an issue: GitHub.