2012-01-12 11 views
0

このような問題を解決するには、私は助けが必要です。アプリケーションはいくつかのDB(MySQL、Oracle)をサポートする必要があります。 JBoss 7のエンティティIDへの移行後、自動生成が壊れました。 Etity例:OracleのJBoss AS 7でMySQLの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; 
    } 
} 

それが正常に動作します。しかし、MySQLの次のエラーで操作を作成し実行しようとしたときには、occures:

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. 

感謝。

答えて

0

I」は、Oracleのため@SequenceGeneratorが必要ですが、のJBoss AS 7.1.0.CR1bMySQLのと私はIDの自動生成や、この注釈に問題がないかどうかわからない:

@Id @GeneratedValue(strategy=GenerationType.AUTO) 
private long id; 
関連する問題