{"record":{"id":"76df58f118d58c64","repo":"hibernate/hibernate-orm","slug":"entity-name-entityname-for-classname-is-qu","errorCode":null,"errorMessage":"Entity name '${entityName}' for ${className} is quoted; quoted database identifiers must be declared using table and column annotations","messagePattern":"Entity name '(.+?)' for (.+?) is quoted; quoted database identifiers must be declared using table and column annotations","errorType":"exception","errorClass":"AnnotationException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java","lineNumber":1408,"sourceCode":"\t\t\tthrow new AnnotationException( \"Entity '\" + name + \"' is annotated both '@DynamicUpdate' and '@SQLUpdate'\" );\n\t\t}\n\t}\n\n\tprivate void bindOptimisticLocking() {\n\t\tfinal var optimisticLocking = annotatedClass.getAnnotationUsage( OptimisticLocking.class, modelsContext() );\n\t\tpersistentClass.setOptimisticLockStyle( fromLockType( optimisticLocking == null\n\t\t\t\t? OptimisticLockType.VERSION\n\t\t\t\t: optimisticLocking.type() ) );\n\t}\n\n\tprivate void bindEntityAnnotation() {\n\t\tfinal var entity = annotatedClass.getAnnotationUsage( Entity.class, modelsContext() );\n\t\tif ( entity == null ) {\n\t\t\tthrow new AssertionFailure( \"@Entity should never be missing\" );\n\t\t}\n\t\tfinal String entityName = entity.name();\n\t\tif ( StringHelper.isQuoted( entityName ) ) {\n\t\t\tthrow new AnnotationException(\n\t\t\t\t\t\"Entity name '\" + entityName + \"' for \" + annotatedClass.getName()\n\t\t\t\t\t\t\t+ \" is quoted; quoted database identifiers must be declared using table and column annotations\"\n\t\t\t);\n\t\t}\n\t\tname = entityName.isBlank() ? unqualify( annotatedClass.getName() ) : entityName;\n\t}\n\n\tpublic boolean isRootEntity() {\n\t\t// This is the best option I can think of here since\n\t\t// PersistentClass is most likely not yet fully populated\n\t\treturn persistentClass instanceof RootClass;\n\t}\n\n\tprivate void bindEntity() {\n\t\tbindEntityAnnotation();\n\t\tbindRowManagement();\n\t\tbindOptimisticLocking();\n\t\tbindConcreteProxy();","sourceCodeStart":1390,"sourceCodeEnd":1426,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java#L1390-L1426","documentation":"Error \"Entity name '${entityName}' for ${className} is quoted; quoted database identifiers must be declared using table and column annotations\" thrown in hibernate/hibernate-orm.","triggerScenarios":"An identifier mapping rule is violated (missing, misplaced, or redeclared @Id).","commonSituations":"Entities without any @Id, id redefinition in subclasses, @Id inside an @IdClass entity or embeddable, or @GeneratedValue on a non-identifier property.","solutions":["Remove quoting from the entity name; declare quoted identifiers via table and column annotations instead."],"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"}