簡體   English   中英

更新多對一休眠關系無用

[英]update on many-to-one hibernate relationship no works

休眠關系多對一有問題。

我的系統是商業提案控制器,其中負責用戶實體的提案。 提案創建並設置負責人時,沒有問題,工作正常。 但是當更改負責人並進行更新時,它更改了對象,我可以在數據表中看到,但是數據庫中沒有更新。 如果我在頁面上刷新,更新將消失。

    @Entity
    @Table(name = "proposal")
    public class Proposal implements Serializable {

    @Id
    @GeneratedValue
    private Integer id;

    @ManyToOne
    private User responsible;
   ............      

DAO代碼

    public void update(Proposal proposal) {
    this.session.update(proposal);

    }

在User類中,我沒有對此關系做任何注釋,它是單向關系。 班級提議還使用用戶班級作為參與者制作用戶的書包,並且這種關系也將是單向關系。

我試圖在用戶類中進行批注,但是也沒有用。

帶有注釋的用戶類別

   @Entity
   @Table(name="user") 
   public class User implements Serializable{

    @OneToMany 
    private List<Proposal> proposal;

User類與userType具有多對一關系,並且可以正常工作。

    @Entity
    @Table(name="user") 
    public class User implements Serializable{

    @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "idType, nullable = true)
     private TipoUsuario    userType;

有人對此有任何想法嗎?

謝謝

刷新到數據庫后,您將看到更改。 手動-flush()或提交事務之后。 User類-必須是一個實體(需要@Entity和@Id批注)或可嵌入類,並且在這種情況下應以相應的方式進行配置。

如果您說-@Entity沒有@Id的User,我不確定它是如何工作的,但是請重試:

  1. 為用戶運行沖洗。 如果您沒有任何異常-這是一個持久對象。 您應該在db / web應用程序日志文件中看到-sql插入查詢。
  2. 提交交易。 用戶的更新值應該被提交。

如果調用刷新,則在提交之前,所有更改都將丟失。

在我看來,您與用戶的ManyToOne關系中缺少@JoinColumn批注。 嘗試更新為此:

@ManyToOne
@JoinColumn(name="userId")
private User responsible;

但是顯然,將“ userId”替換為表中指定的ID名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM