ho una relazione molti-a-uno che voglio essere annullabile:Non può fare rapporto @ManyToOne annullabile
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
Purtroppo, APP continua a impostare la colonna nel mio database come NOT NULL. Qualcuno può spiegarlo? C'è un modo per farlo funzionare? Nota che utilizzo JBoss 7, JPA 2.0 con Hibernate come provider di persistenza e un database di PostgreSQL 9.1.
EDIT:
ho trovato la causa del mio problema. A quanto pare è dovuto al modo in cui ho definito la chiave primaria nell'entità riferimento Customer
:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
Sembra che usando @Column(columnDefinition="serial")
per la chiave primaria imposta automaticamente le chiavi esterne che fanno riferimento al NOT NULL
nel database. È davvero questo il comportamento previsto quando si specifica il tipo di colonna come serial
? C'è un modo per abilitare le chiavi esterne nullable in questo caso?
Grazie in anticipo.
Questo è davvero una soluzione che ho considerato. Sfortunatamente questo non abilita la generazione di ID dal database stesso, ed è una funzionalità di cui ho bisogno quando inserisco i dati manualmente (per esempio con import.sql di hibernate). Fortunatamente immagino che sto per trovare una soluzione. Sto solo facendo dei test e se avrà successo pubblicheremo la soluzione. Grazie per l'aiuto. – vcattin