我有问题,插入数据从一个侧面关系到其他表和关系的另一边,同时休眠,错误org.hibernate.util.JDBCExceptionReporter场“Variable_ID”没有默认值
我有:与用户实体 表用户
@Entity
@Column(name="USER")
public class User{
private int id;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToMany
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@JoinTable(name="USER_CARS_JOINTABLE",
[email protected](name="USER_ID"),
[email protected](name="CARS_ID"))
public Cars userCars;
//set and get methods omitted
}
表汽车行驶汽车实体
@Entity
@Column(name="CARS")
public class Cars{
private int dateId;
@Id
@GeneratedValue(strategy=IDENTITY)
@Column(name="DATE_ID")
public int getDateId() {
return dateId;
}
public void setDateId(int dateId) {
this.dateId = dateId;
}
@ManyToMany
@Cascade(org.hibernate.annotations.CascadeType.ALL)
@JoinTable(name="USER_CARS_JOINTABLE",
[email protected](name="CARS_ID"),
[email protected](name="USER_ID"))
public User username;
//set and get methods omitted
}
正如你可以看到我有一个乔USER和CARS之间的用户和汽车表中包含FK的inTable“USER_CARS_JOINTABLE”。
我也将有表说明和实体类名称描述:
@Entity
@Column(name="DESCRIPTION")
public class Description{
private int id;
@Id
@GeneratedValue(strategy=IDENTITY)
@Column(name="ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String color;
private String size;
private String speed;
private String type;
//set and get methods omitted
}
我JoinTable USER_CARS_JOINTABLE是:
USER_ID INT NOT NULL, CARS_ID INT NOT NULL, DESCRIPTION_ID INT NOT NULL, PRIMARY KEY(INSTITUTION_ID, DATE_ID, SRC_ID), CONSTRAINT FK_USER_ID_IN_USER_CARS FOREIGN KEY(USER_ID) REFERENCES USER(ID), CONSTRAINT FK_CARS_ID_IN_USER_CARS FOREIGN KEY(CARS_ID) REFERENCES CARS(ID), CONSTRAINT FK_DESCRIPTION_ID_IN_USER_CARS FOREIGN KEY(DESCRIPTION_ID) REFERENCES DESCRIPTION(ID)
在我的情况下用户可以拥有汽车的很多的,一个类型的汽车可以属于用户数量。同样的车可以有不同的描述。 类之间的描述和用户实体和汽车实体我将有一个Undirectional,JoinTable,OneToMany的关系。这意味着类用户和汽车将知道关于描述类,但描述不知道用户和汽车。当我将尝试enset数据,我到中高级轿车和类说明数据库从用户身边,我都会有这样的例外:
Hibernate: insert into USER_CARS_JOINTABLE (User_ID, Description) values (?, ?) ERROR: org.hibernate.util.JDBCExceptionReporter - Field 'Cars_ID' doesn't have a default value ERROR: org.hibernate.event.def.AbstractFlushingEventListe ner - Could not synchronize database state with session
如果我将做到这一点从汽车侧面,我将有一个这样的错误:
Hibernate: insert into USER_CARS_JOINTABLE (Cars_ID, Description) values (?, ?) ERROR: org.hibernate.util.JDBCExceptionReporter - Field 'User_ID' doesn't have a default value ERROR: org.hibernate.event.def.AbstractFlushingEventListe ner - Could not synchronize database state with session
这意味着一些我的外键的,因为我是从侧是无法产生或插入数据到这个jointable USER_CARS_JOINTABLE插入它的joinTable USER_CARS_JOINTABLE没有得到一个ID,我不知道为什么?
如果我将为我的一些外键(如User_ID或Cars_ID)添加我的JoinTable数据库模式,那么DEFAULT“number”比它的工作原理是inser数据,但它总是会插入相同的数字,在“数字”中。 但我想要的是给我的一个问题外键在joinTable USER_CARS_JOINTABLE中的值与在parient表User或Cars中的值相同!也许我可以在我的Entity类中使用一些来自Hibernate的@Generator批注来作为我的JoinTable。
谢谢。
你是如何定义每个实体类的ID的?我没有看到上面列出的任何东西。 – JamesB
我很抱歉,我改变它。还要添加我的JoinTAble的描述。谢谢 – user1798755