如何返回自动增量ID,REST服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何返回自动增量ID,REST服务相关的知识,希望对你有一定的参考价值。
我正在使用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);
答案
您可以使用merge instead,并将create方法设置为:
public T create(T entity) {
return getEntityManager().merge(entity);
}
这会将实体插入数据库,然后将其附加到持久性上下文。返回的实体将具有自动递增的ID集。
以上是关于如何返回自动增量ID,REST服务的主要内容,如果未能解决你的问题,请参考以下文章