Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠一对一映射,不更新JoinColumn id_Java_Hibernate_Struts2_Hibernate Mapping_Ibm Rad - Fatal编程技术网

Java 休眠一对一映射,不更新JoinColumn id

Java 休眠一对一映射,不更新JoinColumn id,java,hibernate,struts2,hibernate-mapping,ibm-rad,Java,Hibernate,Struts2,Hibernate Mapping,Ibm Rad,不知道该如何表达此的标题。。所以我会慢慢地解决这个问题 目前我正在开发一个动态web项目,它使用Struts2和Hibernate。网络上没有足够的文档涉及到这两个方面。有大量的文档和教程分别介绍它们,但很少一起介绍。我最多只能找到关于如何集成它们的教程,或者一个通常只涉及一个表的简单CRUD 我现在有两个表,Users和Profile,我想同时更新这两个表。稍后我将详细介绍这一点 这是我的DB表: Users -------------- UserID Email Password Statu

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

目前我正在开发一个动态web项目,它使用
Struts2
Hibernate
。网络上没有足够的文档涉及到这两个方面。有大量的文档和教程分别介绍它们,但很少一起介绍。我最多只能找到关于如何集成它们的教程,或者一个通常只涉及一个表的简单CRUD

我现在有两个表,
Users
Profile
,我想同时更新这两个表。稍后我将详细介绍这一点

这是我的DB表:

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

Profile
--------------
ProfileID
UserID
Name
Interest
ProfileDetails
我正在创建一个注册页面。在此页面中,用户将写下他们的姓名、电子邮件和密码。正如您所看到的,name在Profile表中。我可以在Users表中插入电子邮件和密码,也可以在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="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的更深入的教程,一定要告诉我


干杯~

我每周回答两次这个问题。谢谢你告诉我你的答案。我仍然不太确定如何解决我的问题,我对Struts2和Hibernate有点陌生。根据您的回答,我猜我的addUser操作应该初始化ProfileAction而不是UserAction。我说得对吗?(应该试试这个)不。你应该确保
Profile.user
字段被初始化,而不仅仅是
user.Profile
字段,因为
Profile.user
是所有者方。哦,哇,这实际上解决了它(使用ProfileAction而不是UserAction)。谢谢,伙计,虽然我不认为这是正确的方式哈哈:)我不太确定你初始化个人资料的意思。用户。。所以我现在可能会坚持这个观点。
user.setProfile(profile);//不足
配置文件。设置用户(用户);//现在,所有者端已初始化,Hibernate将保持关联
@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;
}
}