hibernate4 annotation 一对一单向主键关联怎么写

熏肉大饼 2015-06-19 10:46:38
CREATE TABLE `person_11pk` (
`personid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`personid`),
CONSTRAINT `fk12344444` FOREIGN KEY (`personid`) REFERENCES `address_11pk` (`addressid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `address_11pk` (
`addressid` int(11) NOT NULL AUTO_INCREMENT,
`addressdetail` varchar(255) DEFAULT NULL,
PRIMARY KEY (`addressid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;



package com.liuhao.hibernate4.demo.entity.onetoone.primary.oneway;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

import org.apache.commons.lang3.builder.ToStringBuilder;

@Entity(name = "person_11pk")
public class Person11pk {
private int personid;
private String name;
private int age;
private Address11pk address11pk;

public Person11pk() {
}

public Person11pk(int personid, String name, int age,
Address11pk address11pk) {
super();
this.personid = personid;
this.name = name;
this.age = age;
this.address11pk = address11pk;
}

@Id
@GeneratedValue
public int getPersonid() {
return personid;
}

public void setPersonid(int personid) {
this.personid = personid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@OneToOne(optional = false)
@PrimaryKeyJoinColumn
public Address11pk getAddress11pk() {
return address11pk;
}

public void setAddress11pk(Address11pk address11pk) {
this.address11pk = address11pk;
}

@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
builder.append("personid", personid);
builder.append("name", name);
builder.append("age", age);
builder.append("address11pk", address11pk);
return builder.toString();
}

}


package com.liuhao.hibernate4.demo.entity.onetoone.primary.oneway;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.apache.commons.lang3.builder.ToStringBuilder;

@Entity(name="address_11pk")
public class Address11pk {
private int addressid;
private String addressdetail;

public Address11pk() {
};

public Address11pk(int addressid, String addressdetail) {
super();
this.addressid = addressid;
this.addressdetail = addressdetail;
}

@Id
@GeneratedValue
public int getAddressid() {
return addressid;
}

public void setAddressid(int addressid) {
this.addressid = addressid;
}


public String getAddressdetail() {
return addressdetail;
}

public void setAddressdetail(String addressdetail) {
this.addressdetail = addressdetail;
}

@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
builder.append("addressid", addressid);
builder.append("addressdetail", addressdetail);
return builder.toString();
}

}


Junit 测试

@Test
public void testSave() {
System.out.println("-------insert start---------");
session.beginTransaction();

Person11pk p1 = new Person11pk();

p1.setAge(21);
p1.setName("p1");

Address11pk add1 = new Address11pk();
add1.setAddressdetail("郑州市经三路");
add1.setAddressid(1);
p1.setPersonid(add1.getAddressid());
p1.setAddress11pk(add1);

//session.save(add1);
session.save(p1);

log.debug("address : " + add1 + "person :" + p1);
session.flush();
session.getTransaction().commit();
System.out.println("-------insert end---------");
}
...全文
135 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
熏肉大饼 2015-06-19
  • 打赏
  • 举报
回复
问题自己解决了! 有不懂的可以看我的博客

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧