このタイトルの言い方がわからないので、ゆっくりと問題を説明します。
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 に関するより詳細なチュートリアルがある場合は、お知らせください。
乾杯!~