如何返回自动增量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服务的主要内容,如果未能解决你的问题,请参考以下文章

LoopBack4 MongoDB 自动增量自定义 ID

在 Spring 中将自动增量 @Id 限制为 6 位

如何在 Java 中为自动增量表创建查询?

如何避免将表单发送的数据关联到具有自动增量唯一 ID 的 MySQL 数据库中的可能冲突?

Spring boot 自动增量预处理

如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]