`

2009.11.24——Hibernate(5) Annotations注解之@onttoone

阅读更多
2009.11.24——Hibernate(5) Annotations注解之@onttoone
别的也不说了,就看下我写的例子吧,以Car和License
数据库建表:
create table car 
( cid number(7) primary key,
  carName varchar2(20) not null
);


create table license
( lid number(7) primary key,
  licenseNumber varchar2(10) not null,
  licenseColor varchar2(10) not null,
  cid number(7) references car(cid)
);


insert into car values(1,'宝马');
insert into car values(2,'奔驰');
insert into car values(3,'奇瑞');
insert into car values(4,'法拉利');
insert into license values(1,'888888','黑色',1);
insert into license values(2,'111111','红色',2);
insert into license values(3,'222222','白色',3);
insert into license(lid,licenseNumber,licenseColor) values(4,'666666','蓝色');


程序
Car.java
@Entity
@Table
public class Car {
	private Integer cid;
	private String CarName;
	private License license;//双向有,单向没有
	@Id
	@SequenceGenerator

(name="car_seq",sequenceName="car_seq",initialValue=5,allocationSize=1) 
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="car_seq")
	public Integer getCid() {
		return cid;
	}
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	public String getCarName() {
		return CarName;
	}
	public void setCarName(String carName) {
		CarName = carName;
	}
	@OneToOne(cascade={CascadeType.ALL},mappedBy="car")//双向的有,单向的就没有了
	public License getLicense() {
		return license;
	}
	public void setLicense(License license) {
		this.license = license;
	}
	//关系属性的操作
	public void addLicense(License license){
		this.license = license;
		this.license.addCar(this);
	}
	public void removeLicense(){
		this.license.removeCar();
		this.license = null;
	}
}



License.java
@Entity
@Table
public class License {
	private Integer lid;
	private String licenseNumber;
	private String licenseColor;
	private Car car;
	@Id
	@SequenceGenerator

(name="license_seq",sequenceName="license_seq",initialValue=4,allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="license_seq")
	public Integer getLid() {
		return lid;
	}
	public void setLid(Integer lid) {
		this.lid = lid;
	}
	public String getLicenseNumber() {
		return licenseNumber;
	}
	public void setLicenseNumber(String licenseNumber) {
		this.licenseNumber = licenseNumber;
	}
	public String getLicenseColor() {
		return licenseColor;
	}
	public void setLicenseColor(String licenseColor) {
		this.licenseColor = licenseColor;
	}
	@OneToOne(cascade={CascadeType.ALL})
	@JoinColumn(name="cid")
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}
	//关系属性的操作
	public void addCar(Car car){
		this.car = car;
	}
	public void removeCar(){
		this.car = null;
	}
}
spring的配置文件
<bean id="sessionFactory"  
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">   
        <property name="dataSource" ref="dataSource" />   
        <property name="annotatedClasses">   
            <list>   
                <value>com.huitu.khms.pojo.Car</value>
                <value>com.huitu.khms.pojo.License</value>   
            </list>   
        </property> 


双向的就可以级联了:
Car car = new Car();
car.setCarName("宾利");
License license = new License();
license.setLicenseColor("白色");
license.setLicenseNumber("666666");
car.addLicense(license);//注意是addLicense 而不是setLicense
cas.saveCar(car);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics