1

不知道如何表达这个标题..所以我会慢慢地解决这个问题。

目前我正在开发一个使用Struts2Hibernate. 网络上没有足够的文档涉及这 2 个。有很多关于它们的文档和教程,但很少一起使用。最多我只会找到有关如何集成它们的教程或通常只涉及一个表的简单 CRUD。

我现在拥有的是 2 张桌子,UsersProfile想同时更新这两张桌子。稍后我将对此进行更详细的介绍。

这是我的数据库表:

Users
--------------
UserID
Email
Password
Status
userType

Profile
--------------
ProfileID
UserID
Name
Interest
ProfileDetails

我正在创建一个注册页面。在此页面中,用户将写下他们的姓名、电子邮件和密码。如您所见,名称在 Profile 表中。我可以将用户表上的电子邮件和密码以及名称插入到配置文件表中。问题是UserID没有被插入到 Profile 表中。

我的注册页面有这个表单,提交时将执行 addUser 操作。

<s:form action="addUser">
<s:push value="user">
    <s:hidden name="id" />
    <s:textfield name="profile.name" label="Name" />
    <s:textfield name="email" label="Email" />
    <s:password name="password" label="Password" />
    <s:submit />
</s:push>
</s:form>

我的用户类:

@Entity
@Table(name="Users")
public class User implements Serializable {

private Long id;
private String email;
private String password;
private Boolean status;
private Boolean userType;
private Profile profile;

@OneToOne(mappedBy="user", cascade=CascadeType.ALL)
public Profile getProfile() {
    return profile;
}
public void setProfile(Profile profile) {
    this.profile = profile;
}
@Id
@GeneratedValue
@Column(name="USERID")
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}

@Column(name="EMAIL")
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}

@Column(name="PASSWORD")
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

@Column(name="STATUS")
public Boolean getStatus() {
    return status;
}
public void setStatus(Boolean status) {
    this.status = status;
}

@Column(name="USERTYPE")
public Boolean getUserType() {
    return userType;
}
public void setUserType(Boolean userType) {
    this.userType = userType;
}

public User() {}

public User(String email, String password, Boolean status, Boolean userType) {
    this.email = email;
    this.password = password;
    this.status = status;
    this.userType = userType;
}
}

我的个人资料类:

@Entity
@Table(name="Profile")
public class Profile implements Serializable {

private Long profile_id;
private String name;
private String interest;
private String profile_details;
private User user;

@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="USERID")
public User getUser() {
    return user;
}
public void setUser(User user) {
    this.user = user;
}
@Id
@GeneratedValue
@Column(name="PROFILEID")
public Long getProfile_id() {
    return profile_id;
}
public void setProfile_id(Long profile_id) {
    this.profile_id = profile_id;
}

@Column(name="NAME")
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Column(name="INTEREST")
public String getInterest() {
    return interest;
}
public void setInterest(String interest) {
    this.interest = interest;
}

@Column(name="PROFILEDETAILS")
public String getProfile_details() {
    return profile_details;
}
public void setProfile_details(String profile_details) {
    this.profile_details = profile_details;
}
}

我的注释有问题还是我需要在表单中添加其他内容?如果您需要更多详细信息,请告诉我。

另外,如果您有关于 Struts2 + Hibernate 的更深入的教程,请告诉我..

加油!~

4

0 回答 0