This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
The IDE should check names of entities and fields/properties, whether they are not in clash with Toplink/DB reserved words. For example if you create entity User, then the table will not be created in the db, because USER is reserved word. The error/worning should inform that this is reserved word and hint should suggest to create @Table annotations with a new name. The same if developer uses for example year as field name. The hint should suggest @Column annotation with different name.
*** Issue 74401 has been marked as a duplicate of this issue. ***
As it is mentioned in issue #74401 similar check should be done for @Table and @Column annotation.
Tomasz, it would be best to have a method that would check the name in persistence API so that for example the new entity wizard could show a warning when you type an entity name that will not work with default mapping (not an error, but IMO a warning would be nice).
Pavle, I have added a 'PersistentObjectNameValidator' class to the 'JSR 220 Persistence' module (j2ee/persistence), so that it can be used by both: verification and the wizards. I will take care of the verification part.
Finished. IDE: [17.04.06 17:06] Committing "src" started Checking in common/predicates/method/GetterOfFieldNamedWithReservedKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/method/Attic/GetterOfFieldNamedWithReservedKeywordPred.java,v <-- GetterOfFieldNamedWithReservedKeywordPred.java new revision: 1.1.2.2; previous revision: 1.1.2.1 done Checking in persistence/PersistenceAPIAnnotations.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/Attic/PersistenceAPIAnnotations.java,v <-- PersistenceAPIAnnotations.java new revision: 1.1.2.5; previous revision: 1.1.2.4 done Checking in common/predicates/field/FieldNamedWithReservedKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/field/Attic/FieldNamedWithReservedKeywordPred.java,v <-- FieldNamedWithReservedKeywordPred.java new revision: 1.1.2.2; previous revision: 1.1.2.1 done Checking in common/predicates/clazz/ClassNamedWithReservedKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/clazz/Attic/ClassNamedWithReservedKeywordPred.java,v <-- ClassNamedWithReservedKeywordPred.java new revision: 1.1.2.3; previous revision: 1.1.2.2 done
Not all of key words are included. For example "table". No error neither warning is shown, but DB-server announce a syntax error because of CREATE TABLE TABLE
"TABLE" is not EJBQL keyword, so it is not scrictly prohibited as entity name by the JSR220 spec. However being SQL keyword it is likely to cause compatibility problems, the spec discourages using such names. We used to show errors for any SQL reserved keywords, but there were complaints about us being too restictive about it, so the list of forbidden names was limited. The proper fix for this issue seems to be to show errors for names being EJBQL keywords and warnings for other SQL keywords.
fixed. Now persistent object names that are PersistenceAPIQL keywords cause errors and another SQL-99 (reserved and non-reserved) keywords cause a warning. Commit log: IDE: [7/18/06 2:33 PM] Committing "src" started cvs server: scheduling file `common/predicates/method/GetterNameIsSQLKeywordPred.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/clazz/ClassNamedWithJavaPersistenceQLKeyword.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/method/AccessorNamedWithSQLKeyword.java' for addition on branch `release55' cvs server: scheduling file `common/predicates/clazz/ClassNameIsSQLKeywordPred.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/clazz/ClassNamedWithSQLKeyword.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/field/FieldNamedWithJavaPersistenceQLKeyword.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/field/FieldNamedWithSQLKeyword.java' for addition on branch `release55' cvs server: scheduling file `common/predicates/field/FieldNameIsSQLKeywordPred.java' for addition on branch `release55' cvs server: scheduling file `persistence/rules/method/ AccessorNamedWithJavaPersistenceQLKeyword.java' for addition on branch `release55' cvs server: use 'cvs commit' to add these files permanently RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/ Attic/FieldNamedWithSQLKeyword.java,v done Checking in persistence/rules/field/FieldNamedWithSQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/Attic/ FieldNamedWithSQLKeyword.java,v <-- FieldNamedWithSQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done Removing persistence/rules/field/IsFieldNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/Attic/ IsFieldNamedWithJavaPersistenceQLKeyword.java,v <-- IsFieldNamedWithJavaPersistenceQLKeyword.java new revision: delete; previous revision: 1.1.2.1 done Checking in persistence/rules/field/Bundle.properties; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/Attic/ Bundle.properties,v <-- Bundle.properties new revision: 1.1.2.9; previous revision: 1.1.2.8 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/ Attic/FieldNamedWithJavaPersistenceQLKeyword.java,v done Checking in persistence/rules/field/FieldNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/field/Attic/ FieldNamedWithJavaPersistenceQLKeyword.java,v <-- FieldNamedWithJavaPersistenceQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/ Attic/ClassNamedWithSQLKeyword.java,v done Checking in persistence/rules/clazz/ClassNamedWithSQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/Attic/ ClassNamedWithSQLKeyword.java,v <-- ClassNamedWithSQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/ Attic/ClassNamedWithJavaPersistenceQLKeyword.java,v done Checking in persistence/rules/clazz/ClassNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/Attic/ ClassNamedWithJavaPersistenceQLKeyword.java,v <-- ClassNamedWithJavaPersistenceQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done Removing persistence/rules/clazz/IsClassNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/Attic/ IsClassNamedWithJavaPersistenceQLKeyword.java,v <-- IsClassNamedWithJavaPersistenceQLKeyword.java new revision: delete; previous revision: 1.1.2.1 done Checking in persistence/rules/clazz/Bundle.properties; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/clazz/Attic/ Bundle.properties,v <-- Bundle.properties new revision: 1.1.2.7; previous revision: 1.1.2.6 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/ method/Attic/GetterNameIsSQLKeywordPred.java,v done Checking in common/predicates/method/GetterNameIsSQLKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/method/Attic/ GetterNameIsSQLKeywordPred.java,v <-- GetterNameIsSQLKeywordPred.java new revision: 1.1.2.1; previous revision: 1.1 done Checking in persistence/PersistenceAPIProblemFinder.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/Attic/ PersistenceAPIProblemFinder.java,v <-- PersistenceAPIProblemFinder.java new revision: 1.1.2.18; previous revision: 1.1.2.17 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/ method/Attic/AccessorNamedWithJavaPersistenceQLKeyword.java,v done Checking in persistence/rules/method/AccessorNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/method/Attic/ AccessorNamedWithJavaPersistenceQLKeyword.java,v <-- AccessorNamedWithJavaPersistenceQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done Removing persistence/rules/method/IsAccessorNamedWithJavaPersistenceQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/method/Attic/ IsAccessorNamedWithJavaPersistenceQLKeyword.java,v <-- IsAccessorNamedWithJavaPersistenceQLKeyword.java new revision: delete; previous revision: 1.1.2.1 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/ method/Attic/AccessorNamedWithSQLKeyword.java,v done Checking in persistence/rules/method/AccessorNamedWithSQLKeyword.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/method/Attic/ AccessorNamedWithSQLKeyword.java,v <-- AccessorNamedWithSQLKeyword.java new revision: 1.1.2.1; previous revision: 1.1 done Checking in persistence/rules/method/Bundle.properties; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/persistence/rules/method/Attic/ Bundle.properties,v <-- Bundle.properties new revision: 1.1.2.9; previous revision: 1.1.2.8 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/field/ Attic/FieldNameIsSQLKeywordPred.java,v done Checking in common/predicates/field/FieldNameIsSQLKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/field/Attic/ FieldNameIsSQLKeywordPred.java,v <-- FieldNameIsSQLKeywordPred.java new revision: 1.1.2.1; previous revision: 1.1 done RCS file: /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/ clazz/Attic/ClassNameIsSQLKeywordPred.java,v done Checking in common/predicates/clazz/ClassNameIsSQLKeywordPred.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/common/predicates/clazz/Attic/ ClassNameIsSQLKeywordPred.java,v <-- ClassNameIsSQLKeywordPred.java new revision: 1.1.2.1; previous revision: 1.1 done Checking in ProblemFindingUtils.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/Attic/ProblemFindingUtils.java,v <-- ProblemFindingUtils.java new revision: 1.1.2.13; previous revision: 1.1.2.12 done IDE: [7/18/06 2:34 PM] Committing "src" finished