【发布时间】:2014-09-29 10:42:59
【问题描述】:
我正在运行 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 上设置自动增量!
【问题讨论】:
-
离题评论:一般的好习惯是不要用您的母语命名字段和类
-
你的 jpa 实现是什么/
-
我使用Spring sts实现Spring data jpa hibenate mysql
-
而你使用 hbm2ddl.auto=true?
-
hibernate.hbm2ddl.auto=update
标签: java mysql spring jpa many-to-one