 <p>It's a bit confusing but I think the optional attribute (@ManyToOne, @Basic,...) is not used for schema generation by some JPA implementations.</p> <p>I think you need to use the @JoinColumn annotation and set nullable to false: <a href="http://download.oracle.com/javaee/6/api/javax/persistence/JoinColumn.html" rel="nofollow">http://download.oracle.com/javaee/6/api/javax/persistence/JoinColumn.html</a></p> <p>(Or @Column in non-join cases: <a href="http://download.oracle.com/javaee/6/api/javax/persistence/Column.html" rel="nofollow">http://download.oracle.com/javaee/6/api/javax/persistence/Column.html</a>)</p>