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

问题描述 投票:0回答:1

我正在使用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);
rest jpa netbeans
1个回答
0
投票

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

public T create(T entity) {
    return getEntityManager().merge(entity);
}

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

© www.soinside.com 2019 - 2024. All rights reserved.