[英]jpa @manytoone creates composite primary key instead of @id
我正在運行spring jpa項目,並且我有以下包含@ManyToOne關系的類:
package ba.fit.vms.pojo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name="korisnik_vozilo")
public class KorisnikVozilo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Long id;
@ManyToOne( cascade = {CascadeType.REFRESH}, fetch=FetchType.EAGER )
@JoinColumn(nullable=false, updatable=false)
private Vozilo vozilo;
@ManyToOne( cascade = {CascadeType.REFRESH}, fetch=FetchType.EAGER )
@JoinColumn(nullable=false, updatable=false)
private Korisnik korisnik;
@Column(name = "dodijeljeno")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@NotNull
private Date dodijeljeno;
@Column(name = "vraceno")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date vraceno;
...
}
由於某種原因,啟動服務器后,此代碼將創建復合主鍵(korisnik_id,vozilo_vin),而不是@Id定義的主鍵。 這是表格的屏幕截圖: 有人可以向我解釋我做錯了什么以及如何編寫此代碼,因此我沒有在數據庫中獲得此復合鍵,而是在類中定義了該復合鍵。
它甚至在korisnik_id上設置自動增量!
嘗試擺脫updatable=false
。 由於不可更新,這兩列可能被視為實體的不變標識。
您可以檢查如何使用@JoinColumn
解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.