java 一对一的关系_与休眠一对一关系 - java
我嘗試在兩個(gè)表之間創(chuàng)建一對(duì)一的關(guān)系。
其中之一是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;
}
}
第二個(gè)是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;
}
}
現(xiàn)在,在我的程序中,我總是首先創(chuàng)建Person,并且僅在需要時(shí)添加此ReqC2dmRegId。
現(xiàn)在,我想做的就是鏈接這兩個(gè)表。我的意思是,當(dāng)我堅(jiān)持使用此ReqC2dmRegId(當(dāng)然,我向ReqC2dmRegId中的人添加了正確的ID)時(shí),我希望我的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">
我究竟做錯(cuò)了什么?
當(dāng)我嘗試運(yùn)行時(shí):
//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
最后,它應(yīng)如下所示:
人
**id email _pass**
2 lala@gmail.com 1234
ReqC2dmRegId
**id REQC2DMREGID**
2 ffgghhjj
更新:
在我放棄嘗試了解它不起作用的方式之后
我更改了我的ReqC2dmRegId.hbm.xml
看起來(lái)像這樣(多對(duì)一):
而且工作正常,問(wèn)題是當(dāng)我嘗試修改ReqC2dmRegId表時(shí)
使用我的更新方法,它使用相同的personid創(chuàng)建一個(gè)now行
id person_id C2dmid
1 3 asd123
2 3 dfvghj
的方式它不更新右行創(chuàng)建一個(gè)新的盡管我使“多對(duì)一”屬性為unique =“ true”?
提前致謝
參考方案
您必須清楚這種關(guān)系:是一對(duì)一還是多對(duì)一?
看起來(lái)像是多對(duì)一的單向關(guān)系。
這是帶有注釋的示例:
@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
}
頁(yè)面加載而不是提交時(shí)發(fā)生struts驗(yàn)證 - java
請(qǐng)?jiān)徫?我對(duì)Struts有點(diǎn)陌生。我遇到一個(gè)問(wèn)題,即頁(yè)面加載而不是我實(shí)際提交表單時(shí)發(fā)生了驗(yàn)證。我整天都在論壇上搜尋和搜尋,沒(méi)有任何運(yùn)氣。我顯然做錯(cuò)了一些事情,應(yīng)該很容易確定,但是我還沒(méi)有發(fā)現(xiàn)問(wèn)題所在。這是我的struts.xml的片段:
以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean
是否可以在Swing GUI上僅針對(duì)特定組件或組件集設(shè)置用于Synth外觀的文件,而無(wú)需為其他任何組件進(jìn)行更改? java參考方案 是的,有可能。將類型指定為“區(qū)域”,將其更改為“名稱”,將值更改為由setName(“ componentName”)給定的特定名稱;應(yīng)用程序中的方法。添加這個(gè)
總結(jié)
以上是生活随笔為你收集整理的java 一对一的关系_与休眠一对一关系 - java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mc用云服务器搭建_最全的云服务器架设我
- 下一篇: 《零基础》MySQL 连接(四)