No se puede hacer que la relación @ManyToOne sea anulable

Tengo una relación de varios a uno que quiero que sea anulable:

@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;

Desafortunadamente, JPA sigue configurando la columna en mi base de datos como NO NULA. ¿Alguien puede explicar esto? ¿Hay alguna manera de hacerlo funcionar? Tenga en cuenta que uso JBoss 7, JPA 2.0 con Hibernate como proveedor de persistencia y una base de datos PostgreSQL 9.1.

EDITAR:

He encontrado la causa de mi problema. Aparentemente se debe a la forma en que definí la clave primaria en la entidad referenciadaCustomer:

@Entity
@Table
public class Customer { 
    @Id
    @GeneratedValue
    @Column(columnDefinition="serial")
    private int id;
}

Parece que usando@Column(columnDefinition="serial") para la clave primaria establece automáticamente las claves externas que hacen referencia a ellaNOT NULL en la base de datos ¿Es ese realmente el comportamiento esperado al especificar el tipo de columna comoserial? ¿Hay una solución para habilitar claves foráneas que puedan ser anuladas en este caso?

Gracias de antemano.

Respuestas a la pregunta(4)

Su respuesta a la pregunta