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) 个答案