2012-12-29 32 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