[
https://issues.apache.org/jira/browse/OPENJPA-1387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12864365#action_12864365
]
Mark Struberg commented on OPENJPA-1387:
----------------------------------------
A few tips on my sample project:
The NOT NULL can be checked by simply executing
$> mvn openjpa:sql
which generates the database creation SQL script in
./target/database.sql
to execute the project you need to create the database upfront in MySQL with
create database TestDb;
user 'root' with no password is assumed (persistence.xml)
After
$> mvn clean install
you will see the myString column as empty string instead of NULL when doing a
mysql> select * from NullFieldTable;
+----+----------+
| PK | myString |
+----+----------+
| 1 | |
+----+----------+
1 row in set (0.00 sec)
> Unique colums automatically defined as non-nullable
> ---------------------------------------------------
>
> Key: OPENJPA-1387
> URL: https://issues.apache.org/jira/browse/OPENJPA-1387
> Project: OpenJPA
> Issue Type: Bug
> Components: sql
> Affects Versions: 2.0.0-M3
> Environment: Error happens in every environment.
> Reporter: Martin Dirichs
> Assignee: Pinaki Poddar
> Fix For: 2.0.0-beta
>
> Attachments: openjpa-test.zip, OpenJPA-Trunk_OJ1387.patch
>
>
> Any unique constraint declared with OpenJPA implicitly sets the respective
> columns to be non-null. This is a problem if OpenJPA's mapping tool is used
> to create the database schema. Even if something like @Column(nullable=true)
> is explicitly stated, the columns will always be created by OpenJPA as not
> null.
> Modifying the database schema manually to make the columns nullable is a
> possible workaround. It does not seem to cause any problems with either
> OpenJPA or the databases.
> I would suggest to drop the marking of unique columns as not nullable. This
> is done by removing the corresponding code lines in
> org.apache.openjpa.jdbc.schema.Unique (trivial patch appended to this issue).
> If someone wants a unique column to be not nullable, this can be specified
> explicitly with @Column(nullable=false) as usual.
> I can only speculate about the reason this strange coupling of unique and
> nullable had been introduced into OpenJPA. To my knowledge, it is perfectly
> legal use to have unique contraints on nullable columns. In effect this means
> that there may be multiple rows with null values, whilst all rows with
> non-null values have to be unique. ANSI SQL-92 also explicitly mentions
> nullable unique columns and states that this is a crucial difference between
> PRIMARY KEY columns and UNIQUE columns: the former are always not nullable,
> the latter may be nullable.
> This issue also pops up again and again in the user discussions, without (to
> my knowledge) a single authorative answer to why this behaviour is as it is
> in OpenJPA. Two examples:
> My question, which remained unanswered:
> http://n2.nabble.com/Unique-colums-automatically-made-NOT-NULL-td2827809.html
> Another users question, about a month later:
> http://n2.nabble.com/Nullable-unique-constraints-td3161182.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.