1

このタイトルの言い方がわからないので、ゆっくりと問題を説明します。

Struts2現在、とを使用する動的 Web プロジェクトに取り組んでいますHibernate。これら 2 に関連する Web 上のドキュメントは実際には十分ではありません。それらに関するドキュメントやチュートリアルは個別にたくさんありますが、まとめてあることはめったにありません。せいぜい、それらを統合する方法に関するチュートリアル、または通常は 1 つのテーブルのみを含む単純な CRUD しか見つかりません。

私が今持っているのは2つのテーブルで、Users両方Profileを同時に更新したいです。これについては後で詳しく説明します。

これが私のDBテーブルです:

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

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

登録ページを作成しています。このページで、ユーザーは自分の名前、電子メール、およびパスワードを書き留めます。ご覧のとおり、name は Profile テーブルにあります。ユーザー テーブルに電子メールとパスワードを挿入し、プロファイル テーブルに名前を挿入できます。問題は、UserIDがプロファイル テーブルに挿入されていないことです。

私の登録ページにはこのフォームがあり、送信時に 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