{"record":{"id":"07e3341fca225cbc","repo":"hibernate/hibernate-orm","slug":"entity-class-classname-may-not-specify-a-pri","errorCode":null,"errorMessage":"Entity class '<className>' may not specify a '@PrimaryKeyJoinColumn'","messagePattern":"Entity class '<className>' may not specify a '@PrimaryKeyJoinColumn'","errorType":"exception","errorClass":"AnnotationException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java","lineNumber":967,"sourceCode":"\t\t\t// let's see if we had a discriminator column (it's perfectly\n\t\t\t// valid for joined inheritance to not have a discriminator)\n\t\t\tif ( discriminatorColumn != null ) {\n\t\t\t\t// we do have a discriminator column\n\t\t\t\tif ( state.hasSiblings() || !discriminatorColumn.isImplicit() ) {\n\t\t\t\t\tfinal var rootClass = (RootClass) persistentClass;\n\t\t\t\t\tbindDiscriminatorColumnToRootPersistentClass( rootClass, discriminatorColumn, holder );\n\t\t\t\t\tif ( context.getBuildingOptions().shouldImplicitlyForceDiscriminatorInSelect() ) {\n\t\t\t\t\t\trootClass.setForceDiscriminator( true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void checkNoJoinColumns(ClassDetails annotatedClass) {\n\t\tif ( annotatedClass.hasAnnotationUsage( PrimaryKeyJoinColumns.class, modelsContext() )\n\t\t\t\t|| annotatedClass.hasAnnotationUsage( PrimaryKeyJoinColumn.class, modelsContext() ) ) {\n\t\t\tthrow new AnnotationException( \"Entity class '\" + annotatedClass.getName()\n\t\t\t\t\t+ \"' may not specify a '@PrimaryKeyJoinColumn'\" );\n\t\t}\n\t}\n\n\tprivate void checkNoOnDelete(ClassDetails annotatedClass) {\n\t\tif ( annotatedClass.hasAnnotationUsage( PrimaryKeyJoinColumns.class, modelsContext() )\n\t\t\t\t|| annotatedClass.hasAnnotationUsage( PrimaryKeyJoinColumn.class, modelsContext() ) ) {\n\t\t\tthrow new AnnotationException( \"Entity class '\" + annotatedClass.getName() + \"' may not be annotated '@OnDelete'\" );\n\t\t}\n\t}\n\n\tprivate static void handleForeignKey(ClassDetails clazzToProcess, MetadataBuildingContext context, DependantValue key) {\n\t\tfinal var foreignKey = clazzToProcess.getDirectAnnotationUsage( ForeignKey.class );\n\t\thandleForeignKeyConstraint( key, foreignKey, nestedForeignKey( clazzToProcess ), context );\n\t}\n\n\tprivate static ForeignKey nestedForeignKey(ClassDetails clazzToProcess) {\n\t\tfinal var pkJoinColumn = clazzToProcess.getDirectAnnotationUsage( PrimaryKeyJoinColumn.class );","sourceCodeStart":949,"sourceCodeEnd":985,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java#L949-L985","documentation":"Error \"Entity class '<className>' may not specify a '@PrimaryKeyJoinColumn'\" thrown in hibernate/hibernate-orm.","triggerScenarios":"A primary-key join column declaration is empty, misplaced, or does not reference the primary key.","commonSituations":"Empty @PrimaryKeyJoinColumns, @PrimaryKeyJoinColumn on a class that forbids it, or a secondary-table join not referencing the primary key.","solutions":["Remove @PrimaryKeyJoinColumn from the entity class where it is not permitted."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}