2017-06-12 8 views
1

Hibernateを使用してデータベースを更新しようとしています。私がマージを呼び出すと、データベースに新しい行が作成されます。私は何のエラーも受けない。タラが働いていますが、私は挿入しないでください。マージを使用しているときにHibernateが更新の代わりに挿入します

モデル:

@Entity 
@Table(name = "Books") 
public class Manual implements Serializable { 
    @Id 
    @GeneratedValue 
    private int idManual; 
    private String denumire; 
    private String disciplina; 
    private Date dataPostare; 

    @Enumerated(EnumType.STRING) 
    private TipManual tipManual; 


    private String emailContact; 
    private String telefonContact; 
    private double pret; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "username") 
    private User userName; 

    public Manual() { 

    } 

    public Manual(int idManual, String denumire, String disciplina, Date dataPostare, TipManual tipManual, 
      String emailContact, String telefonContact, double pret, User userName) { 
     super(); 
     this.idManual = idManual; 
     this.denumire = denumire; 
     this.disciplina = disciplina; 
     this.dataPostare = dataPostare; 
     this.tipManual = tipManual; 
     this.emailContact = emailContact; 
     this.telefonContact = telefonContact; 
     this.pret = pret; 
     this.userName=userName; 
    } 

    public int getIdManual() { 
     return idManual; 
    } 

    public void setIdManual(int idManual) { 
     this.idManual = idManual; 
    } 

    public String getDenumire() { 
     return denumire; 
    } 

    public void setDenumire(String denumire) { 
     this.denumire = denumire; 
    } 

これは私のモデルクラスで、私も自分のIDの@GeneratedValueを削除しようとしましたが、問題は同じです。マージのための

My機能:アプリケーションがupdateBookを呼び出したときに

あなたの実体が起こったウィルのエンティティを外れている場合
@Override 
    @Transactional 
    public Manual updateBook(Manual book) { 
     em.merge(book); 
     em.flush(); 
     return book; 
    } 
+0

アプリケーションがupdateBookを呼び出すと、手動エンティティのidManualに値がありますか? – adyjr

+0

@adyjr、thxあなたが正しいです –

+0

あなたは大歓迎です@ S.over17。私が答えるならば、私の答えを正しいとマークしますか? – adyjr

答えて

1

以上がの値がマニュアルエンティティのidManualありますか?

識別子が存在しない場合は、エンティティが再度挿入されるため、これを確認してください。

関連する問題