使用Hibernate注解来配置多对一单向的三种方法
2013-12-03 22:17
417 查看
多对一单向(数据库设计,多在在多方设计外键)
数据库设计:主键列不可分,联合主键不可有部分依赖,不能存在传递依赖
注解中在多方的类中加入一个"一方"的类,然后在方法之上加上@ManyToOne
XML中在多方的XML中设置<many-to-one
name="一方的字段名" column="具体的外键名字">
注:在数据库中要生成的表要改名字,可以用@Table(name="")
第一种方法(一共会生成三张表,两张实体表,一张关系表)
多端:(生成一张表,存在一个外键comp_id)
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST,
CascadeType.MERGE} )
@JoinColumn(name="COMP_ID")
public Company getCompany() {
return company;
}
...
}
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
public Set<Student>
getStudent() {
return student;
}
public voidsetStudent(Set<Student>
student) {
this.student =
student;
第三种方法
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name="Flight_Company",
joinColumns = @JoinColumn(name="FLIGHT_ID"),
inverseJoinColumns = @JoinColumn(name="COMP_ID")
)
public Company getCompany() {
return company;
}
...
}
数据库设计:主键列不可分,联合主键不可有部分依赖,不能存在传递依赖
注解中在多方的类中加入一个"一方"的类,然后在方法之上加上@ManyToOne
XML中在多方的XML中设置<many-to-one
name="一方的字段名" column="具体的外键名字">
注:在数据库中要生成的表要改名字,可以用@Table(name="")
第一种方法(一共会生成三张表,两张实体表,一张关系表)
多端:(生成一张表,存在一个外键comp_id)
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST,
CascadeType.MERGE} )
@JoinColumn(name="COMP_ID")
public Company getCompany() {
return company;
}
...
}
一端:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
public Set<Student>
getStudent() {
return student;
}
public voidsetStudent(Set<Student>
student) {
this.student =
student;
}
第二种方法:(效果同第一种一样)
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE},targetEntity=CompanyImpl.class )
@JoinColumn(name="COMP_ID")
public Company getCompany() {
return company;
}
...
}
public interface Company {
...
第三种方法
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name="Flight_Company",
joinColumns = @JoinColumn(name="FLIGHT_ID"),
inverseJoinColumns = @JoinColumn(name="COMP_ID")
)
public Company getCompany() {
return company;
}
...
}
相关文章推荐
- 使用Hibernate注解来配置多对一单向的三种方法
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- [注解的力量]Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 关于Hibernate的merge() attachDirty() attachClean()三种方法比较使用
- PHP中使用memcache存储session的三种配置方法
- Hibernate注解方法使用总结
- hibernate使用annotation配置时将@Id配置到字段field上和get方法上的区别
- Hibernate注解方法使用主键生成策略@GeneratedValue(三)
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件
- Hibernate注解方法使用总结
- Spring 配置Hibernate时hibernatetemplate.save()、find()等方法无法使用
- 在Eclipse中配置及使用Hibernate插件的方法说明(HibernateSynchronizer)
- Hibernate 使用JBOSS 自带JNDI连接池连接SQL SERVER 2005的配置方法