【发布时间】:2016-08-31 06:48:48
【问题描述】:
我有两个实体:
1)
@Entity
@Table(name = "users")
public class User {
private String username;
private String password;
private String name;
private String surname;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "depId")
private Department department;
private boolean enabled;
private Set<UserRole> userRole = new HashSet<UserRole>(0);
private Set<Equipment> equipment = new HashSet<Equipment>();
2)
@Entity
@Table(name = "department")
public class Department {
private int depId;
private String name;
private String adress;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "department")
private Set<User> user = new HashSet<User>();
如何编写 HQL 查询,以向用户插入值。不是来自其他表。我有插入表单的 JSP 表单。我想从那表格中添加值。 我对“删除”方法有疑问。
用户DAOImpl:
@Override
public User findByUserName(String username) {
return (User) getSession().get(User.class, username);
}
@Override
public void delete(String username) {
getSession().delete(findByUserName(username));
}
当我使用此方法时,它会删除 Department 中的“department”和 UserRole 表中的“user_role”。但我只想删除用户。
更新
此问题已解决。但我有第二个问题。我有第二个实体,例如名为 UserRole 的 Depatment。并且有相同的方法。我需要方法:
UserRoleDAOImpl:
@Override
public Set<UserRole> findByRole (Set<UserRole> userRole){
}
部门DAOImpl:
@Override
public Department findByDepartmentName(String departmentName) {
List<Department> departments = getSession()
.createQuery("select d from Department d where d.name =:departmentName")
.setParameter("departmentName", departmentName).list();
return departments.size() == 0 ? null : departments.get(0);
}
控制器:
@RequestMapping(value = "/updateUser", method = RequestMethod.POST)
private ModelAndView updateUser(@ModelAttribute("users") User user, BindingResult result) {
ModelAndView model = new ModelAndView();
department = departmentService.findByDepartmentName(user.getDepartment().getName());
user.setDepartment(department);
userRole = userRoleService.findByRole(user.getUserRole());
user.setUserRole(userRole);
userService.update(user);
model.addObject("allUsers", userService.getAllUsers());
model.setViewName("superAdmin");
return model;
}
我不知道怎么写userRoleService.findByRole(user.getUserRole())。它不能正常工作。
【问题讨论】:
-
您不需要编写任何查询来保存对象。使用 entityManager.persists() 方法
-
但是如何添加外键“部门”?
-
如果将部门设置为用户,将用户设置为部门,它将由休眠完成
-
你的意思是设置部门到用户和用户到部门?你的意思是我写的实体吗?
-
我的意思是你创建对象调用
user.setDepartment和`department.setUsers(ListOfusers)的点。