有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个本地服务器由GlassFish提供,我有两个客户端:一个由服务器生成: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) 个答案