Sto cercando di mantenere un oggetto in un database. Continua a ricevere "L'ID della colonna non può accettare l'errore del valore nullo". Il mio scopo è simile al seguente:@GeneratedValue (strategy = GenerationType.AUTO) non funziona come un pensiero
@Entity
public class TestTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id = 0;
@Column(nullable=false, length=256)
private String data = "";
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
la mia persistono funzione:
public static synchronized boolean persistObject(Object obj){
boolean success = true;
EntityManager em = null;
EntityTransaction tx = null;
try{
em = getEmf().createEntityManager();
tx = em.getTransaction();
tx.begin();
em.persist(obj);
tx.commit();
} catch (Exception e){
success = false;
} finally{
try{
em.close();
} catch(Exception e){
//nothing
}
}
return success;
}
@Null: quindi accettare la risposta (facendo clic sul segno di spunta accanto) in modo che il cguler ottenga una piccola ricompensa per averlo offerto. Fare ciò aiuta anche a incoraggiare gli altri a rispondere bene alle altre domande. –
@cguler Questo ha funzionato anche per me, ma non so perché GenerationType.Table funzioni e Auto no. Puoi spiegarmi o riferirmi? –
@ChristianVielma il punto è, AUTO assume automaticamente IDENTITÀ. Potrebbe essere necessario provare il GenerationType.IDENTITY esplicitamente e vedere se funziona per vedere se si tratta di un problema con l'impostazione AUTO. Ma probabilmente la tua configurazione di db non la supporta. Tuttavia GenerationType.TABLE crea una tabella e la usa per generare le chiavi e questa impostazione dovrebbe funzionare su tutti gli rdbms. Spero che questo aiuti :) –