我有問題,插入數據從一個側面關係到其他表和關係的另一邊,同時休眠,錯誤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