簡體   English   中英

jpa @manytoone創建復合主鍵而不是@id

[英]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.

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