如何返回自动增量ID,REST服务

时间:2017-12-20 15:41:50

标签: rest jpa netbeans

我使用netbeans帮助程序创建REST服务。我有一个"销售"以自动递增为主键的表,当销售保存在bbdd中时,id会自动分配,但我需要获取它才能将其分配给另一个表。 在进行持久化之后获取id的正确方法是什么? 使持久性的自生成方法如下。

public void create(T entity) {
    getEntityManager().persist(entity);
}

这是服务中的方法

@POST
@Override
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void create(Venta entity) {
    super.create(entity);
}

在客户端我使用这样的方法:

public void create_JSON(Object requestEntity) throws ClientErrorException {
    webTarget.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON));

}

修改 服务方法

@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Venta insertar(Venta entity) {
    return getEntityManager().merge(entity);
}

客户端方法

public <T> T insertar_JSON(Object requestEntity, Class<T> responseType) throws ClientErrorException {
    return webTarget.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), responseType);
}

我在servlet中如何使用它

venta=managerVentas.insertar_JSON(venta,Venta.class);

1 个答案:

答案 0 :(得分:0)

您可以改为使用merge ,并将create方法设为:

Height

这会将实体插入数据库,然后将其附加到持久性上下文。返回的实体将具有自动递增的ID集。