Hi Jean-Baptiste, I think what you want is @Column(nullable=false) instead of marking it as optional=false.
There's some blurring of the lines in OpenJPA, but generally @Column should be used to indicate database constraints, and the @ManyToOne annotation for ORM behavior. @Column will be used when OpenJPA generates table and to keep track of the database schema internally. So nullable=false generates a DB constraint when you use the mapping tool / synchronize mappings. The relationship annotations (@MtoO, @MtoM, etc) are used to validate the contents of an entity at runtime. Optional=false tells OpenJP to make sure there is a valid entity on the other side of the relationship before persisting, updating. TL;DR : use @Column to indicate database constraints. Hope this helps, -mike -- View this message in context: http://openjpa.208410.n2.nabble.com/ManyToOne-not-optional-nullable-tp5287827p5288851.html Sent from the OpenJPA Users mailing list archive at Nabble.com.
