2017-07-28 98 views
0

TLDR;在休眠狀態下切換外鍵不起作用

我使用的是spring boot和jpa。

我想切換對象的外鍵,在這種情況下只是切換車輛的類別。

但是,當我嘗試這樣做,休眠其解釋爲,如果我試圖改變類對象的主鍵,而不是僅僅開關外鍵,我得到這個錯誤

org.hibernate.HibernateException:identifier of an instance of abc.package.mode.Category was altered from 1 to 2 

我有一個實體類別,我只用於分類車輛實體對象。

@Entity 
public class Category { 

    @Id 
    private Long id; 

    private String name; 
} 

這是需要分類的車輛類。

@Entity 
public class Vehicle { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO, generator="dish_seq") 
    private Long id; 

    private String name; 

    private Integer price; 

    @ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.DETACH) 
    private Category category; 

} 

比方說,有3類,

  1. '轎車'
  2. '轉換'
  3. '兩廂'

如果我有一輛車對象, Nissan- PT76,$ 30000,類別:[id:1,name:Sedan]

當我嘗試改變類別手動[ID:2,名稱:換股]和堅持它,我得到

org.hibernate.HibernateException:identifier of an instance of abc.package.mode.Category was altered from 1 to 2 

我不能從一個現有的對象切換到另一個。我試圖在互聯網上查看這些信息,但是我無法找到正確的關鍵字來搜索hibernate中的這種關係,還是根本不允許這種關係?

回答

0

到您的類別字段添加列引用在Vehicle類

@JoinColumn(name = "category_id", nullable = false) 
+0

不,這還不讓我改變車輛的類別 – user2049132