Tôi đang cố gắng lưu giữ một đối tượng vào cơ sở dữ liệu. Tiếp tục nhận được 'Cột ID không thể chấp nhận lỗi giá trị null'. Mục đích của tôi trông như thế này:@GeneratedValue (strategy = GenerationType.AUTO) không hoạt động như ý nghĩ
@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;
}
}
tôi kiên trì chức năng:
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: Sau đó chấp nhận câu trả lời (bằng cách nhấp vào dấu kiểm bên cạnh nó) để cguler nhận được một phần thưởng nhỏ để cung cấp nó. Làm như vậy cũng giúp khuyến khích người khác trả lời các câu hỏi khác của bạn tốt. –
@cguler Điều này cũng làm việc cho tôi, nhưng tôi không biết tại sao GenerationType.Table hoạt động và Auto thì không. Bạn có thể giải thích cho tôi hoặc giới thiệu tôi không? –
@ChristianVielma điểm là, AUTO mặc định là IDENTITY. Bạn có thể cần phải thử GenerationType.IDENTITY một cách rõ ràng và xem nó hoạt động để xem nếu nó là một vấn đề với thiết lập AUTO. Nhưng có lẽ cấu hình db của bạn không hỗ trợ nó. Tuy nhiên GenerationType.TABLE tạo ra một bảng và sử dụng nó để tạo ra các phím và thiết lập này sẽ làm việc trên tất cả các rdbms. Hy vọng điều này sẽ giúp :) –