User and Checkpoint has many to many relationship. I'm able save values in database but not able to remove value from the database.
User.java
@Id
@GeneratedValue
private Integer id;
@ManyToMany
Set<Roles> roles;
@ManyToMany(fetch = FetchType.EAGER)
List<Checkpoints> checkpoints;
public User() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<Checkpoints> getCheckpoints() {
return checkpoints;
}
public void setCheckpoints(List<Checkpoints> checkpoints) {
this.checkpoints = checkpoints;
}
Checkpoints.java
@Entity
@Table(name = "checkpoints")
public class Checkpoints {
@Id
@GeneratedValue
private Integer id;
private String description;
@ManyToMany(mappedBy = "checkpoints")
List<User> user;
public Checkpoints(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
}
In controller adding checkpoints works fine but after removing checkpoint object from user when i save user, it doesn't save in database. UserController.java
@RequestMapping(value="/checkpointadd.html", method = RequestMethod.POST)
public void checkpoint(@RequestParam Integer categoryId, HttpSession session){ // This works fine
System.out.println("Checkpoint checked :"+categoryId);
User user = (User) session.getAttribute("loggeduser");
Checkpoints cp = userDao.getCheckpointById(categoryId);
user.getCheckpoints().add(cp);
userDao.saveUser(user);
user.getCheckpoints().remove(cp);
}
@RequestMapping(value="/checkpointremove.html", method = RequestMethod.POST)
public void checkpointremove(@RequestParam Integer categoryId, HttpSession session){ // I'm doing something wrong here
System.out.println("Checkpoint removed :"+categoryId);
User user = (User) session.getAttribute("loggeduser");
Checkpoints cp = userDao.getCheckpointById(categoryId);
user.getCheckpoints().remove(cp);
userDao.saveUser(user);
}
In my UserDaoImpl
@Transactional
@Override
public User saveUser(User user) {
// TODO Auto-generated method stub
return entityManager.merge(user);
}
Please let me know what i'm doing wrong or other approach to do the same!! Thanks in advance!!
Aucun commentaire:
Enregistrer un commentaire