samedi 21 février 2015

Remove operation in spring MVC

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