我的用户表是
@Entity
@Table(name = "PERSON")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "USER_ID")
private String userId;
@Column(name = "PASSWORD")
private String password;
@Column(name = "EMAIL")
private String email;
@Column(name = "ROLE")
private String role;
@Column(name = "DEPARTMENT")
private String department;
private Roles roles;
public User() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@JoinColumn(name = "RID")
public Roles getRoles() {
return roles;
}
public void setRoles(Roles roles) {
this.roles = roles;
}
}
我的角色类是
@Entity
@Table(name = "ROLES")
public class Roles implements Serializable {
private static final long serialVersionUID = 1L;
private int rid;
private String role;
private String description;
// list of child class members
private List<User> user;
// map the child class[User] with java.util.Collection. Here we r using SET
// private Set<User> users;
// no arg constructor
public Roles() {
}
@Id
@Column(name = "RID")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public List<User> getUser() {
return user;
}
public void setUser(List<User> user) {
this.user = user;
}
@Column(name = "role")
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Column(name = "Description")
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
从此admin.jsp中单击控件转到/ users maping的用户
<body>
<h1>Admin Page</h1>
You can do the followings:
<form:form action="/users" method="post" ModelAttribute="user" >
<table border="1" >
<tr>
<td><a href="findUserById"> Find a User</a></td>
</tr>
<tr>
<td><a href="users">Edit a User</a></td>
</tr>
<tr>
<td><a href="users">Update a User</a></td>
</tr>
<tr>
<td><a href="users"> Delete a User</a></td>
</tr>
<tr>
<td><a href="users">List of all the Users</a></td>
</tr>
</table>
</form:form>
</body>
控制器映射是:
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String usersList(@ModelAttribute("user") User user, BindingResult result, Model model) {
List<User> userList = userService.listPersons();
// attribute goes to jsp
model.addAttribute("userList", userList);
// return jsp page
return "users";
}
users.jsp是
<body>
<h2>List of Users</h2>
<form:form modelAttribute="user" method="GET" >
<table>
<thead style="background: #fcf">
<tr>
<th>ID</th>
<th>Name</th>
<th>User Id</th>
<th>Password</th>
<th>Email</th>
<th>Department</th>
<th>Role</th>
<th>Update</th>
<th>Delete</th>
</tr>
</thead>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.userId}</td>
<td>${user.password}</td>
<td>${user.email}</td>
<td>${user.department}</td>
<td>${user.role}</td>
<td><a href="<c:url value='/user/edit/${user.id}' />">Edit</a></td>
<td><a href="<c:url value='/delete/${user.id}' />">Delete</a></td>
</tr>
</c:forEach>
</table>
</form:form>
</body>
我正在尝试使用Hibernate进行一对多的关联。一个角色可以给予许多用户,因此角色是父实体,而用户是子实体。我有两个表User和Roles ...当我运行应用程序时,我得到了这个
INFO: Server startup in 8273 ms
WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1054, SQLState: 42S22
ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unknown column 'user0_.roles' in 'field list'
其他部分运行正常的应用程序。我该怎么办呢?我做错了什么。请帮忙。
答案 0 :(得分:0)
将@ManyToOne
添加到User
类:
@ManyToOne
private Roles roles;
在mappedBy
课程中添加Roles
:
@OneToMany(mappedBy = "roles",fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public List<User> getUser() {
答案 1 :(得分:0)
在您的用户类中:
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
@JoinColumn(name = "RID")
List<Rol> roles;
在你的Rol课程中:
@OneToMany(mappedBy="roles", fetch = FetchType.LAZY)
@JsonIgnore
private List<User> users;
这应该有效