I have two pojos Files and User with many to many association.
The code snippet of the pojos are:
Code:
@Entity
@Table(name="FILE")
public class Files implements Serializable{
private List<User> users = new ArrayList<User>();
@ManyToMany(targetEntity = User.class, cascade = { CascadeType.PERSIST,CascadeType.MERGE })
@JoinTable(name = "FILE_USER", joinColumns = { @JoinColumn(name = "FILE_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") })
public List<User> getUsers() {
return users;
}
.............
}
@Entity
@Table(name = "USERS")
public class User implements Serializable{
private List<Files> files = new ArrayList<Files>();
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, mappedBy = "users", targetEntity = Files.class)
public List<Files> getFiles() {
return files;
}
}
I tried to save the Files object in the database using following code:
Code:
Files file = new Files();
file.setFileDescription("this is test");
file.setUploadedBy("testUser");
file.setUploadedDate(new Date());
User u=(User)getSession().load(User.class,new Long(23));//from database
Project p=(Project)getSession().load(Project.class,new Long(3));//from database
List<User> users = new ArrayList<User>();
users.add(u);
file.setUsers(users);
file.setProject(p);
getSession().saveOrUpdate(file);
getSession().flush();
I got the following error
Hibernate: insert into FILE (DESCRIPTION, PROJECT_ID, UPLOAD_DATE, UPLOAD_FILE_NAME, UPLOADED_BY) values (?, ?, ?, ?, ?)
org.hibernate.HibernateException: identifier of an instance of com.yomari.track.model.Files was altered from 6 to null
there is no insertion in the association table