簡體   English   中英

對象引用一個未保存的瞬態實例多個關系

[英]object references an unsaved transient instance multiple relations

我在上面的代碼中有一些錯誤,錯誤說

HTTP Status 500 - Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: crm.venkat.model.Accounts; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: crm.venkat.model.Accounts

@Entity
@Table(name="contacts")
public class Contact {

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinTable(name = "jt_accounts_contacts", joinColumns = {     @JoinColumn(name = "contactid") }, inverseJoinColumns = { @JoinColumn(name =     "accountid") })
    private Accounts account = new Accounts();

    //Getters and Setters
}


@Entity
@Table(name="accounts")
public class Accounts {

    @OneToMany(orphanRemoval=true, targetEntity=Contact.class,     mappedBy="account", fetch = FetchType.EAGER,  cascade=CascadeType.ALL)
    @Fetch(FetchMode.SELECT)
    private List<Contact> Contacts = new ArrayList<Contact>();

    //Getters and Setters
}

當我插入具有填充帳戶的聯系人時,它可以工作。 如果我不填寫帳戶,則會出現錯誤。 我希望帳戶類是可選的。

這是因為您在字段初始化程序中創建了Accounts ,因此,如果它沒有被托管Accounts實例覆蓋,則Hibernate會將其視為瞬態,並在刷新時拋出異常。

解決方案是不要在字段初始化程序中創建它:

@ManyToOne(fetch=FetchType.EAGER)
@JoinTable(name = "jt_accounts_contacts", joinColumns = {@JoinColumn(name = "contactid")}, inverseJoinColumns = {@JoinColumn(name = "accountid")})
private Accounts account;

暫無
暫無

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

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