Невозможно сделать отношения @ManyToOne обнуляемыми
У меня есть отношения многие-к-одному, которые я хочу обнулять:
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
К сожалению, JPA продолжает устанавливать столбец в моей базе данных как NOT NULL. Кто-нибудь может объяснить это? Есть ли способ заставить его работать? Обратите внимание, что я использую JBoss 7, JPA 2.0 с Hibernate в качестве поставщика сохраняемости и базу данных PostgreSQL 9.1.
РЕДАКТИРОВАТЬ:
Я нашел причину своей проблемы. По-видимому, это связано с тем, как я определил первичный ключ в ссылочной сущностиCustomer
:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
Кажется, что с помощью@Column(columnDefinition="serial")
для первичного ключа автоматически устанавливает внешние ключи, ссылающиеся на негоNOT NULL
в базе данных. Это действительно ожидаемое поведение при указании типа столбца какserial
? Есть ли обходной путь для включения внешних ключей, которые могут иметь значение NULL, в этом случае?
Заранее спасибо.