0
所以我想弄清楚MySQL的關係,我寫了代碼,但它似乎並沒有工作,好像我添加了一些東西到我的數據庫其他表的foreighn鍵時間給了我NULL,我有我的關係的代碼是:在MySQL中的關係
用戶類別:
@OneToMany(mappedBy="user")
private Collection<Movie> movies;
public Collection<Movie> getMovies() {
return movies;
}
public void setMovies(Collection<Movies> movies) {
this.movies = movies;
}
電影類:
@ManyToOne
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
我每次添加一個新的電影(這是假設被連接與用戶表一起)外鍵(user_id)在電影表中給我null。總結一下我想在這裏實現的目標,每次我想將電影添加到我的庫中時,我都希望擁有該電影的用戶的ID在數據庫中顯示。
謝謝。
編輯:
我把每一次我嘗試和運行它時收到此錯誤信息:創建和
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: entity.Movie.user
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
at persistence.PersistenceUtil.persist(PersistenceUtil.java:26)
at main.CustomerConfig.main(CustomerConfig.java:47)
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: entity.Movie.user
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:95)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
代碼將數據保存到數據庫:
System.out.println("Type the users's name please. ");
String name = br.readLine();
System.out.println("Type the movies name please. ");
String mname = br.readLine();
User user = new User(name);
PersistenceUtil.persist(user);
Movie movie = new Movie(mname);
PersistenceUtil.persist(movie);
System.out.println("User & movie names are created!");
這是什麼?我從來沒有見過這用於MySQL。 – Kermit
用於創建表格之間的關係。 – hamod90
我真的好奇你在哪裏找到這個。 – Kermit