`

hibernate3 annotation 的实例 3 (one to many)

阅读更多

http://bigcat.easymorse.com/?p=249

 

在EJB3.0 规范中 多对一与一对多的双向关系, 多对一(就是@ManyToOne注解的这端,是多端哦 不要搞混了)这端总是双向关联端的主题(owner)端, 而一对多端的关联注解为 @OneToMany(mappedBy=" " )其值是:多对一端的属性

实例三: (一对多)

  CREATE TABLE "ABC"."CLAZZ"
   ( "ID" NUMBER(*,0) NOT NULL ENABLE,
 "CLASSNAME" VARCHAR2(20 BYTE),

 CONSTRAINT "CLAZZ_PK" PRIMARY KEY ("ID"))

 

 CREATE TABLE "ABC"."STUDENT"
   ( "ID" NUMBER(*,0) NOT NULL ENABLE,
 "NAME" VARCHAR2(20 BYTE),
 "BIRTHDAY" DATE,
 "CLAZZID" NUMBER(*,0),
  CONSTRAINT "PK_STUDENT" PRIMARY KEY ("ID"))

 

alter table STUDENT
add constraint student_clazz_fk foreign key
(clazzid) references CLAZZ (id)

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

@Entity
@Table(name="clazz")
public class Clazz {
 @Id
 @GeneratedValue(generator="cseq")
 @GenericGenerator(name="cseq",strategy="sequence",parameters={@Parameter(name="sequence",value="clazz_seq")})
 private Integer id;
 private String className;
 @OneToMany(cascade=CascadeType.REFRESH,mappedBy="clazz")//一个班级有很多学生
 private Set<Student> students;
 
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getClassName() {
  return className;
 }
 public void setClassName(String className) {
  this.className = className;
 }
 public Set<Student> getStudents() {
  return students;
 }
 public void setStudents(Set<Student> students) {
  this.students = students;
 }
}

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

@Entity
public class Student {
 @Id
 @GeneratedValue(generator="sseq")
 @GenericGenerator(name="sseq",strategy="sequence",parameters={@Parameter(name="sequence",value="seq_student")})
 private Integer id;
 private String name;
 private Date birthday;
 @ManyToOne
 @JoinColumn(name="clazzid")
 private Clazz clazz;   //和上面的红色的clazz对应
 
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
 public Clazz getClazz() {
  return clazz;
 }
 public void setClazz(Clazz clazz) {
  this.clazz = clazz;
 }
}

 

在delete Clazz的一个对象的时候,出现异常

Caused by: java.sql.BatchUpdateException: ORA-02292: 违反完整约束条件 (ABC.UC_CLAZZ_FK) - 已找到子记录

但是在Student表中没有和Clazz表有关联的行时可以删除

 解决方法:@OneToMany(cascade={CascadeType.REFRESH,CascadeType.REMOVE},mappedBy="clazz") //添加删除级联

分享到:
评论

相关推荐

    Hibernate3的帮助文档

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    Hibernate3+中文参考文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在集合中出现的依赖对象 ...

    Hibernate+中文文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...

    HibernateAPI中文版.chm

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    hibernate3.2中文文档(chm格式)

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    最全Hibernate 参考文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to ...

    Hibernate中文详细学习文档

    7.4.1. 一对多(one to many) / 多对一(many to one) 7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many ...

    Hibernate 中文 html 帮助文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...

    Hibernate教程

    8.4.1. 一对多(one to many) / 多对一(many to one) 8.4.2. 一对一(one to one) 8.5. 使用连接表的双向关联(Bidirectional associations with join tables) 8.5.1. 一对多(one to many) /多对一( many ...

    hibernate3学习源码

    `hib_a_manytomany`和`hib_x_manytomany`提供了多对多关联的实现,这通常需要一个中间表来存储两个实体的关联信息,可以通过@ManyToMany注解或XML中的&lt;many-to-many&gt;元素进行配置。 5. **注解版和XML版配置**: ...

    hibernate 体系结构与配置 参考文档(html)

    一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    Hibernate多对多双向关联(annotation/xml)

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联是常见的关系映射类型,尤其在处理数据库中的复杂关系时显得尤为重要。本主题将深入探讨使用Hibernate进行多对多双向关联的实现,既可以通过注解...

    hibernate3.04中文文档.chm

    8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖...

    hibernate 框架详解

    一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖对象 ...

    Hibernate参考文档

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) 8.2. 在...

    Hibernate多对一单向关联(annotation/xml)

    &lt;many-to-one name="clazz" column="class_id" class="com.example.Class" cascade="all"/&gt; &lt;/hibernate-mapping&gt; ``` 而在`class.hbm.xml`中,我们只需要定义`Class`实体的基本信息: ```xml &lt;hibernate-...

    Hibernate学习笔记

    一对一映射可以通过在主键上使用unique属性或者使用many-to-one来实现。多对多映射通常通过关联表来实现,但也可以通过集合映射来简化。 集合映射涉及到List、Bag和Map等接口,每种集合类型都有不同的配置需求。...

    Java常见异常

    12. **java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor** 类型转换失败,两个类之间没有继承关系。检查代码中涉及的类实例...

    整理后java开发全套达内学习笔记(含练习)

    allowing a single object to be seen as having many types. principle n.原则,原理,主义 ['prinsipl] priority n. 优先级 [prai'ɒriti] process n. 程序, 进程 ['prɒses] protected (关键字) 受保护的,私有的 ...

Global site tag (gtag.js) - Google Analytics