Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpa@manytoone创建复合主键而不是@id_Java_Mysql_Spring_Jpa_Many To One - Fatal编程技术网

Java jpa@manytoone创建复合主键而不是@id

Java jpa@manytoone创建复合主键而不是@id,java,mysql,spring,jpa,many-to-one,Java,Mysql,Spring,Jpa,Many To One,我正在运行spring jpa项目,我有以下包含@manytone关系的类: 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;

我正在运行spring jpa项目,我有以下包含@manytone关系的类:

    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上设置自动增量

您可以检查如何使用
@JoinColumn
解决问题。

尝试摆脱
updateable=false
。无法更新,这两列可能被视为实体的不可变标识。

offtopic注释:一般的好做法是不要用母语命名字段和类jpa实现是什么/I使用Spring sts实现Spring数据jpa hibenate mysqland使用hbm2ddl.auto=true?hibernate.hbm2ddl.auto=updateAny链接或建议?检查这一点,hibernate参考解释了所有注释,示例非常好地删除了它,删除了表,保存了类并重新启动了服务器。不幸的是,同样的结果。