java 一对一的关系_与休眠一对一关系 - java

我尝试在两个表之间创建一对一的关系。

其中之一是Person:

public class Person implements Serializable {

static final long serialVersionUID = 1L;

private long id;

private String _email;

private String _pass;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getEmail() {

return _email;

}

public void set_email(String _email) {

this._email = _email;

}

public String getPass() {

return _pass;

}

public void set_pass(String _pass) {

this._pass = _pass;

}

}

第二个是ReqC2dmRegId表:

public class ReqC2dmRegId implements Serializable {

private static final long serialVersionUID = 1L;

Person person;

String C2dmid;

private long id;

public ReqC2dmRegId(){}

public String getC2dmid() {

return C2dmid;

}

public void setC2dmid(String c2dmid) {

C2dmid = c2dmid;

}

public ReqC2dmRegId(Person person, String C2dmid) {

super();

this.person = person;

this.C2dmid = C2dmid;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

}

现在,在我的程序中,我总是首先创建Person,并且仅在需要时添加此ReqC2dmRegId。

现在,我想做的就是链接这两个表。我的意思是,当我坚持使用此ReqC2dmRegId(当然,我向ReqC2dmRegId中的人添加了正确的ID)时,我希望我的ReqC2dmRegId用正确的Person ID更新或保存新行。

这些是我的hbm文件:

ReqC2dmRegId.hbm.xml

/p>

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

person

Person.hbm.xml

/p>

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

我究竟做错了什么?

当我尝试运行时:

//this should to update or save the object in DB

public void update (Object query){

EntityManager em = emf.createEntityManager();

em.getTransaction().begin();

//em.createNativeQuery(query).executeUpdate();

em.merge(query);

em.flush();

em.getTransaction().commit();

em.close();

}

我得到:

attempted to assign id from null one-to-one property:Person

最后,它应如下所示:

**id email _pass**

2 lala@gmail.com 1234

ReqC2dmRegId

**id REQC2DMREGID**

2 ffgghhjj

更新:

在我放弃尝试了解它不起作用的方式之后

我更改了我的ReqC2dmRegId.hbm.xml

看起来像这样(多对一):

而且工作正常,问题是当我尝试修改ReqC2dmRegId表时

使用我的更新方法,它使用相同的personid创建一个now行

id person_id C2dmid

1 3 asd123

2 3 dfvghj

的方式它不更新右行创建一个新的尽管我使“多对一”属性为unique =“ true”?

提前致谢

参考方案

您必须清楚这种关系:是一对一还是多对一?

看起来像是多对一的单向关系。

这是带有注释的示例:

@Entity

@Table(name="PERSON")

public class Person {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private int id;

private String _email;

private String _pass;

//getters and setters

}

和另一类:

@Entity

@Table(name="ReqC2dmRegId")

public class ReqC2dmRegId {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private int id;

@ManyToOne

@JoinColumn(name = "PERSON_ID")

private Person person;

//getters and setters

}

页面加载而不是提交时发生struts验证 - java

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean

是否可以在Swing GUI上仅针对特定组件或组件集设置用于Synth外观的文件,而无需为其他任何组件进行更改? java参考方案 是的,有可能。将类型指定为“区域”,将其更改为“名称”,将值更改为由setName(“ componentName”)给定的特定名称;应用程序中的方法。添加这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值