【问题标题】:ID auto generation for MySQL on JBoss AS 7在 JBoss AS 7 上为 MySQL 自动生成 ID
【发布时间】:2012-01-12 16:18:49
【问题描述】:

我需要帮助来解决此类问题。应用程序需要支持多个数据库(MySQL、Oracle)。迁移到 JBoss 7 后,实体 ID 自动生成被破坏。 实体示例:

@Entity
@Table(name="foo")
public class Foo {
    private Integer id;
    private String model;

    @Id 
    @SequenceGenerator(name="foo_seq_gen", sequenceName="foo_0", initialValue=1, allocationSize=1)
    @Column(name="id", updatable=false)
    @GeneratedValue(generator = "foo_seq_gen")
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name="model", length=64, updatable=false)
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
}

对于 Oracle,它工作正常。但是当尝试在 MySQL 上执行创建操作时,会出现以下错误:

15:34:56,290 ERROR [org.hibernate.util.JDBCExceptionReporter] (http-localhost-127.0.0.1-8080-1) Table 'scheme.foo_0' doesn't exist

因此 MySQL 尝试以序列的形式访问不存在的表,而不是使用本机自动生成机制。

有人知道治疗方法吗?

使用“表格”生成器策略没有帮助。

环境:

MySQL 5.5.16;
JBoss AS 7.1.0.Beta1;
Hibernate 3.6.1.

谢谢。

【问题讨论】:

    标签: mysql hibernate jboss7.x


    【解决方案1】:

    我不确定您是否需要 Oracle 的 @SequenceGenerator,但是使用 JBoss AS 7.1.0.CR1bMySQL 我对 ID 自动生成没有任何问题和这个注释:

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2011-10-20
      • 2017-08-25
      • 2011-10-05
      相关资源
      最近更新 更多