Мой стол пользовательодин ко многим вопрос Hibernate
@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 щелкать пользователей управление переходит к/пользователей картографирования
<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. Одна Роль может быть предоставлена многим Пользователям, поэтому Роли - это родительский объект, а Пользователь - дочерний объект. У меня есть две таблицы и роли пользователей ... когда я запустить приложение я получаю это
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'
Другие части работать нормально приложения. Как мне это сделать? что я делаю неправильно. Пожалуйста помоги.
я получаю это: Ошибка: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Неизвестный столбец «user0_.roles_RID» в «списке поля» – javaz
Скорее всего делать с этой линией @Column (name = "RID"). Проверьте, что у вас есть правильное имя столбца, написанное в соответствии с табличной структурой. – Aeseir
Я предполагаю, что это что-то связано с первичным ключом и внешним ключом ... но я не знаю, что делать или как делать? – javaz