Java Rest和JPA,强制使用自动增量而不是JSON对象值?

Java Rest和JPA,强制使用自动增量而不是JSON对象值?,java,json,rest,jpa,jersey,Java,Json,Rest,Jpa,Jersey,好的,我将Jersey用于我的REST服务,并且我正在尝试持久化JSON中接收到的一批对象 这是我的实体: @Entity @Table(name="element", uniqueConstraints=@UniqueConstraint(columnNames={"key","value"})) public classElement implements Serializable { @Id @NotNull private long key; @NotBlank @Size(

好的,我将Jersey用于我的REST服务,并且我正在尝试持久化JSON中接收到的一批对象

这是我的实体:

@Entity
@Table(name="element", uniqueConstraints=@UniqueConstraint(columnNames={"key","value"}))
public classElement implements Serializable {

    @Id
@NotNull
private long key;

@NotBlank
@Size(max=30)
private String value;

@NotBlank
@Size(max=12)
private String more;

@NotNull 
private long userid;
这是我的“创建”方法:

@POST
@路径(“/create”)
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共响应createRecord(列表元素)引发异常{
for(元素:元素){
违规=验证程序。验证(元素);
如果(冲突.size()>0){
jsonResponse.setSuccess(false);
setMessage(“错误”);
setValidationError(this.getValidationErrorList());
} 
否则{
em.persist(valeur);
}
jsonResponse.setSuccess(true);
jsonResponse.setMessage(“成功”);
}
返回Response.ok().entity(新的ObjectMapper().writeValueAsString(jsonResponse)).build();
}
当我有一个包含值、more和userid字段的json时,这很好地工作。该键获取一个自动递增的值。但问题是,在我的上下文中,我无法验证“用户”发送的所有内容。因此,可以使用上述字段和键(主键)发送json。因此,当它被持久化时,我会得到一个SQLError(重复条目)

所以我的问题(最后):当我没有指定任何键,它得到一个“auto”值时,到底会发生什么?即使指定了键,我如何重现这个结果?(即忽略json键字段,并具有与不使用该字段时相同的自动递增值)


非常感谢

为什么不验证用户发送的所有内容?如果不需要ID,并且发送了ID,则应将其作为错误发出信号。无论如何,如果您仍然希望接受ID为的消息,但希望忽略它们,那么只需在调用persist()之前将ID设置为null即可。我无法将long设置为null。(但老实说,在看到你的评论之前,我甚至没有想过将键设置为null,这是漫长的一天!)将其设置为0:当用户提交一条没有ID的消息时,它具有的默认值。我正要告诉你,我尝试过,但它没有完全切断它。但后来我意识到你所说的很有道理,于是我回顾了我的代码。结果证明它确实有效。但是我的uniqueConstraints还有一个问题,SQLError看起来很像。。。。好的,非常感谢!
@POST
@Path("/create")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON) 
public Response createRecord(List<Element> elements) throws Exception{

    for(Element element : elements){

        violations = validator.validate(element);       
        if (violations.size() > 0) {

         jsonResponse.setSuccess(false);
         jsonResponse.setMessage("Error");
         jsonResponse.setValidationError(this.getValidationErrorList());    

        } 
        else {
            em.persist(valeur);  
        }
        jsonResponse.setSuccess(true);
        jsonResponse.setMessage("Success");
 }


    return Response.ok().entity(new ObjectMapper().writeValueAsString(jsonResponse)).build();

}