我運行的春天JPA項目,我有以下含@ManyToOne關係類:JPA @ManyToOne創建複合主鍵代替@id
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上設置自動增量!
offtopic評論:一般好的做法是沒有命名字段和類添加到你的母語 – Bozho 2014-09-29 10:49:59
什麼是你的JPA實現/ – Bozho 2014-09-29 10:51:37
我使用Spring STS來實現Spring數據JPA ** ** hibenate mysql的 – Blejzer 2014-09-29 10:54:58