With this class definition: package ru.focusmedia.odp.server.datastore.jpa.entity;
import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.PostLoad; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import ru.focusmedia.odp.server.datastore.api.objects.OdpObjectRecord; @SuppressWarnings("serial") @Entity @Table(name = "objects", uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "parent_id" }) }) public class OdpObjectEntity implements Serializable, OdpObjectRecord { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; @ManyToOne @JoinColumn(name = "parent_id") private OdpObjectEntity parent; @ManyToOne @JoinColumn(name = "object_class_id", nullable = false) private OdpObjectClassEntity objectClass; @Column(nullable = false) private boolean initialDataReceived; protected OdpObjectEntity() { // for JPA } public OdpObjectEntity(OdpObjectEntity parent, String name, OdpObjectClassEntity objectClass) { this.parent = parent; this.name = name; this.objectClass = objectClass; } @Override public Long getId() { return this.id; } @Override public OdpObjectClassEntity getObjectClass() { return objectClass; } @Override public String getName() { return this.name; } @Override public OdpObjectEntity getParent() { return parent; } @Override public String toString() { return "OdpObjectEntity [id=" + id + ", name=" + name + ", objectClass=" + objectClass + "]"; } @PostLoad public void ensureInitialized() { getParent(); } @Override public boolean isInitialDataReceived() { return initialDataReceived; } public void setInitialDataReceived(boolean initialDataReceived) { this.initialDataReceived = initialDataReceived; } } OpenJPA generates CREATE TABLE objects -- OdpObjectEntity (id BIGINT NOT NULL, initial_data_received SMALLINT NOT NULL, name VARCHAR(255) NOT NULL, object_class_id BIGINT NOT NULL, parent_id BIGINT NOT NULL, PRIMARY KEY (id), CONSTRAINT U_OBJECTS_NAME UNIQUE (name, parent_id)) I didn't expect "NOT NULL" for parent_id there. How can I avoid it? I tried setting `columnDefinition = "BIGINT"` in parent's @Column annotation without result. Of course, I can just not set unique constraints in the entity and add them separately later... -- View this message in context: http://openjpa.208410.n2.nabble.com/Why-is-NOT-NULL-generated-for-UniqueConstraint-tp7580309.html Sent from the OpenJPA Users mailing list archive at Nabble.com.