我的设置是Appengine + hibernate + mysql
有时app会抛出异常:
org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions:键'PRIMARY'的重复条目'466'
不幸的是,它不经常发生,也不容易复制。
我的实体构造如下:
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
@Entity
@Table(name = "Game")
public class Game {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private Long srvId;
...
我知道Google App Engine不支持Identity作为生成器策略。我注意到的是,重新部署应用程序后问题就消失了。然后它会在一段时间后再次发生。奇怪的是,在GAE的日志中,我可以看到在异常期间没有其他请求继续进行,即使重试请求,也会在15秒后再次抛出异常。 (15秒是请求之间的时间)1分钟后问题消失。
它与缓存有关吗? (我没有配置任何)或app引擎上的多个sql实例?
答案 0 :(得分:0)
你可能已经想过这个,这个答案可能太基础了,但你的方法是否在mysql中使用自动增量功能?
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
This answer给出了@GeneratedValue注释的细分。另外,我没有在您的代码中看到strategy=
属性,我在大多数其他示例中都看到过。