2017-11-06 3 views
0

私は、スキーマmyschemaの下にmytableという名前のPostgres 9.5.5テーブルを持っています。主キーはありません。テーブルが作成されたときに追加できませんでした。これは、テーブルのidカラムに値が重複している行を引き起こしています。このテーブルへの唯一のアクセスポイントは、Hibernate 4.3.10 Finalエンティティクラスのsave()、update()およびdelete()メソッドによるものです。誰も私が知っている限り手動でデータベースを更新していません。コードのどの部分がID列の重複値をテーブルに送信していますか?エンティティクラスは次のようになります -休止状態の重複キー

以下
@Entity 

@Table(name = "mytable", schema = "myschema") 

public class MyTable implements Serializable { 


/** Id. */ 

@Id 

@GeneratedValue(generator = "myschema.mytable_seq", strategy = GenerationType.AUTO) 
@SequenceGenerator(name = "myschema.mytable_seq", sequenceName = "myschema.mytable_seq") 
@Column(name = "id", unique = true, nullable = false) 
private int id; 

のpostgresのシーケンスの定義である -

CREATE SEQUENCE myschema.mytable_seq 
    INCREMENT 1 
    MINVALUE 1 
    MAXVALUE 9223372036854775807 
    START 765 
    CACHE 1; 

休止状態コードはこのような何か(のSessionFactoryがorg.hibernate.SessionFactoryのautowiredインスタンスである -

@Repository 
    public class HBMyTableDao extends HBAbstractDAO<MyTable> implements MyTableDao { 
     public void save(MyTable model) { 
      sessionFactory.getCurrentSession().save(model); 
     } 

     public void saveOrUpdate(MyTable model) { 
      sessionFactory.getCurrentSession().saveOrUpdate(model); 
     } 

     public void update(MyTable model) { 
      sessionFactory.getCurrentSession().update(model); 
     } 

     public void delete(MyTable model) { 
      sessionFactory.getCurrentSession().delete(model); 
     } 
    } 
+0

に自動生成列を追加することができますhttps://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#mapping-declaration-id

を参照してくださいあなたは、エンティティを保存/更新のために使用したコードのスニペットを投稿してもらえますか? –

+0

が元の投稿に追加されました...ありがとう –

答えて

0

休止主キーが必要です。

は、たぶん、あなたがテーブル