0
我想用hibernate和struts2建立一個登錄頁面。我的設計如下。每個登錄用戶都有一個角色。許多用戶可以具有相同的角色。
所以我的課是:
User.javastruts2的休眠映射
@Entity
@Table(name = "user", catalog = "ciner")
public class User implements java.io.Serializable {
private Integer userId;
private Role role;
private String loginId;
private String password;
private String firstName;
private String lastName;
public User() {
}
public User(Role role, String loginId, String password, String firstName, String lastName) {
this.role = role;
this.loginId = loginId;
this.password = password;
this.firstName = firstName;
this.lastName = lastName;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_id")
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@Column(name = "password", nullable = false)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "role_id")
public Role getRole() {
return this.role;
}
public void setRole(Role role) {
this.role = role;
}
@Column(name = "login_id", nullable = false, length = 7)
public String getLoginId() {
return this.loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
@Column(name = "first_name", nullable = false, length = 50)
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name = "last_name", nullable = false, length = 50)
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "User{" + "userId=" + userId + "role=" + role + "loginId="
+ loginId + "firstName=" + firstName + "lastName=" + lastName
+ '}';
}
}
Role.java
@Entity
@Table(name = "role", catalog = "ciner")
public class Role implements java.io.Serializable {
private Integer roleId;
private String roleDescription;
private List users;
public Role() {
}
public Role(String roleDescription) {
this.roleDescription = roleDescription;
}
public Role(String roleDescription, List users) {
this.roleDescription = roleDescription;
this.users = users;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "role_id", unique = true, nullable = false)
public Integer getRoleId() {
return this.roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
@Column(name = "role_description", nullable = false, length = 100)
public String getRoleDescription() {
return this.roleDescription;
}
public void setRoleDescription(String roleDescription) {
this.roleDescription = roleDescription;
}
// @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy =
// "role")
@OneToMany(fetch = FetchType.LAZY, mappedBy = "role", targetEntity = User.class)
public List getUsers() {
return this.users;
}
public void setUsers(List users) {
this.users = users;
}
@Override
public String toString() {
return "Role{" + "roleId=" + roleId + "roleDescription="
+ roleDescription + "users=" + users + '}';
}
}
它返回1個用戶就好了,如果它是有效的。但是,由於該方法返回該用戶回來,我用return users.get(0);
堆棧
java.lang.StackOverflowError
java.lang.Integer.toString(Unknown Source)
java.lang.Integer.toString(Unknown Source)
java.lang.String.valueOf(Unknown Source)
java.lang.Integer.toString(Unknown Source)
java.lang.String.valueOf(Unknown Source)
java.lang.StringBuilder.append(Unknown Source)
com.inhis.model.Role.toString(Role.java:70)
sun.reflect.GeneratedMethodAccessor293.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)
com.inhis.model.Role_$$_javassist_6.toString(Role_$$_javassist_6.java)
java.lang.String.valueOf(Unknown Source)
java.lang.StringBuilder.append(Unknown Source)
com.inhis.model.User.toString(User.java:97)
java.lang.String.valueOf(Unknown Source)
java.lang.StringBuilder.append(Unknown Source)
java.util.AbstractCollection.toString(Unknown Source)
org.hibernate.collection.PersistentBag.toString(PersistentBag.java:507)
說,角色是
1,未經授權
2,經理
3,用戶
我是什麼做錯了?另外,我想給它們分配一個默認角色1.我無法弄清楚。所以,我現在將它存儲爲空。我怎樣才能做到這一點?
直到你DA MAN。你不知道,這讓我付出了多少痛苦。愚蠢的我!非常感謝。這工作!唷! 呵呵,我怎樣才能將用戶的role_id設置爲1?截至目前,它被存儲爲空。 – Nish 2010-07-11 23:15:43
當實體將時間戳或其他實體稱爲屬性時。你如何設置它們的默認值? – Nish 2010-07-17 21:51:23
我不知道如何設置真正的SQL默認值,但你可以在構造函數中設置這些默認值或像這樣: private String myProperty =「defaultValue」; – Till 2010-07-23 13:38:27