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!"); 
+1

這是什麼?我從來沒有見過這用於MySQL。 – Kermit

+0

用於創建表格之間的關係。 – hamod90

+0

我真的好奇你在哪裏找到這個。 – Kermit

回答

0
Movie movie = new Movie(mname); 
PersistenceUtil.persist(movie); 

如錯誤所示,此用戶​​爲空movie對象,您忘記了將用戶設置在其中。這是它如何看起來像:

Movie movie = new Movie(mname); 
movie.setUser(user); 
PersistenceUtil.persist(movie); 
+0

非常感謝,實際工作。 – hamod90