Meine Benutzertabelle istone to many Hibernate Problem
@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;
}
}
Und meine Rolle Klasse ist
@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;
}
}
von diesem admin.jsp auf die Benutzer klicken die Steuerung zu/Benutzer
Maping geht<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>
Controller Mapping ist:
@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 ist
<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>
Ich versuche, eine zu viele Assoziation mit Hibernate zu haben. Ein Rollen kann vielen Benutzern zugewiesen werden, sodass Rollen die übergeordnete Entität und Benutzer die untergeordnete Entität ist. Ich habe zwei Tabellen Benutzer und Rollen ... wenn ich die app laufen bekomme ich diese
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'
Andere Teile ok der App ausgeführt werden. Wie soll ich darüber gehen? was ich falsch mache. Bitte helfen Sie.
bekomme ich diese: ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unknown column 'user0_.roles_RID' in 'field list' – javaz
Höchstwahrscheinlich mit dieser Linie zu tun @Column (Name = "RID"). Überprüfen Sie, dass Sie den richtigen Spaltennamen gemäß Tabelle Struktur – Aeseir
haben Ich denke, es ist etwas mit Primärschlüssel und Fremdschlüssel zu tun ... aber ich weiß nicht, was zu tun ist oder wie zu tun? – javaz