MySQL自动增量跳转到最近的51

时间:2017-01-09 09:44:48

标签: java mysql client-server

我有一个由GlassFish提供的本地服务器,我有2个客户端:一个是由服务器生成的:JSF;而另一个不在服务器上:用Java编写的终端客户端。

到目前为止,一切都很好。每当我在表中添加一个新行时,我的自动递增主键(数字ID)被精确地提高1并且添加了一行。 现在,每次当我刚刚启动客户端并通过客户端将数据行添加到表中时(无论哪一个都做同样的混乱),id被提升到最接近的51(即最后一个id是303,所以添加后,表中新行的id为351)。如果我的客户端自上次添加后仍在运行,并且我添加了下一行,则可以正常工作:下一个id为352.在我重新启动客户端之前,它会继续没有问题。当我在重新启动客户端后添加一个新行时,它会再次执行相同的操作:将id提升到最接近的51然后再提高1。

由于Java和MySQL的关系,这是一种错误吗?这在我使用PHP之前从未发生过。

编辑:对于使用数据库进行操作,我通过EclipseLink(QuestionDAO.java)使用ORM技术:

这是我在添加问题时在数据层中所做的事情:

public void add( Question q )
{
    em . persist(q);
}

当我从数据层(Facade.java)调用方法时,这就是我在业务层中所做的事情:

public String addQuestion( String text, String subject )
{
    Subject s = subjectDAO.find( subject );
    if( s != null )
    {
        Question q = new Question( text, s );
        questionDAO . add(q);
        return "Question successfully added";
    }
    else
        return "Subject does not exist";
}

此处还有REST方法:

@POST
@Path("add")
public String add( @FormParam("text") String text, @FormParam("subject") String subject )
{
    String s = facade.addQuestion(text, subject);
    return s;
}

我的实体类中的注释:

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Basic(optional = false)
@Column(name = "question_number")
private Integer questionNumber;

我不相信我的代码中存在错误。

0 个答案:

没有答案