2013-12-09 88 views
0

我是Hibernate的新手,我正在努力學習它的細微差別。 我正在嘗試使用hibernate保存或更新實體。 我的POJO類: -Hibernate SaveOrUpdate使用GeneratedValue作爲主鍵

@Entity 
    @Table(name = "TestDB") 
    public class TestCaseData { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private intid; 
    @Column(columnDefinition="TEXT") 
    private String location; 
    private String name; 

    /*Getters and setters*/ 

主要類別: -

public TestDbDao{ 
     public static void main(String args[]){ 
      TestCaseData d1 = new TestCaseData(); 
      TestCaseData d2 = new TestCaseData(); 
      TestCaseData d3 = new TestCaseData(); 

      d1.setHash("New York"); 
      d1.setName("Panache"); 
      saveOrUpdate(d1); 
      /** d2 and d3 **/ 
    } 
    } 

saveOrUpdate這個實體。第一次我運行的主類,3列在表中創建。 當我第二次運行相同的程序時,根據我在saveOrUpdate時的知識,如果該值不存在於表中,它應該保存,或者如果已經存在的值在表中更新,則應該更新。但是我發現它3行用不同的ID添加到表格中。 id 1,2,3,4,5,6是相同的。爲什麼saveOrUpdate不適用於generateValue ID? 任何人都可以請解釋一下嗎?

+0

你有什麼異常嗎? – Masudul

+0

不,我沒有得到任何異常。直接相同的d1,d2和d3被添加到新的ID 4,5,6 – Newbie

回答

-3

由於您正在運行該程序2次,因此這是預期的。

每次程序運行,休眠只看到你在3個新的實體傳遞(無ID),所以你告訴Hibernate的數據庫中創建新記錄。

要查看saveAndUpdate()的影響,則可能通過一個分離的實例在第二時間,例如休眠具有ID的TestCaseData實例對應於DB中的現有記錄,但具有不同的name。你應該能夠看到Hibernate更新數據庫中的相應記錄。

+0

表我可以知道downvote的原因嗎? –

+0

剛剛又一次downvote。我渴望知道原因:) –

相關問題