2012-12-29 37 views
-1

將車輛對象保存到數據庫時自動生成ID。我如何獲得ID的價值,而不需要堅持呢?@生成值 - 獲取ID的值

這裏是代碼:

public class Vehicle{ 

    @Id 
    @GeneratedValue 
    int id; 
    private int year; 
    private String model; 
    //getters, setters 
} 

UPDATE

public void updateVehicle(Vehicle vehicle) { 

     em.getTransaction().begin(); 
     Vehicle vehicleDB = em.find(Vehicle.class, vehicle.getId()); 
     vehicleDB.setYear(vehicle.getYear()); 
     vehicleDB.setModel(vehicle.getModel()); 
     em.getTransaction().commit(); 
} 

回答

6

你不能,因爲它是由數據庫在持久性的瞬間產生。在此之前,id沒有定義。

+0

你有這個聲明的一些來源嗎? –

+0

邏輯,您無法預測對象的ID,因爲數據庫負責管理自動遞增列的ID。你的應用程序不能說,數據庫接下來會生成哪個ID。也許數據庫策略是每次添加2到新的ID ..而不是簡單的增量1。 – burna

+0

我需要生成的ID的值設置車輛對象的id –

-1

保存之前我們不能得到它,但簡單的解決方案是在保存對象之前,您可以通過選擇查詢來獲取它。

+0

這種解決方案可能會進入競賽狀態。不要這樣做! –

+1

假設的解決方案不正確,順序可能與遞增1不同,此外,在選擇之後和插入之前可能會發生插入,所以ID是錯誤的。 – burna