hibernate3.x一对多注解查询与注意细节

hibernate3.x
一、注解相关
一对多中的一

@Table(name="t_class_room")
@Entity
class ClassRoom{
    private Integer id;
    private String name;
    
    //重点 这里的mappedBy写的是一对多中 多的一方(Student.class)中的与该类关联的字段名
    @OneToMany(mappedBy="classRoom",targetEntity=Student.class) 
    private Set<Student> students;
    
}

一对多中的多

@Table(name="t_student")
@Entity
class Student{
    private Integer id;
    private String name;
    
    //name是该类映射表中保存关联字段的列名 referencedColumnName是一对多中 一的一方(ClassRoom.class)中的字段名  注意:name对应的是数据库列名  referencedColumnName对应的是类的字段名
    @ManyToOne
    @JoinColumn(name="class_room_id",referencedColumnName="id") 
    private ClassRoom classRoom;
}

二、查询相关
关联查询时注意fetch   hql语句from ClassRoom cr inner join fetch cr.students s where s.name = '小明'
当查询条数时不要加fetch hql语句select(cr) from ClassRoom cr inner join cr.students s where s.name='小明'
当要查询某一个班级中的所有学生时,就直接查询这个班级 hql语句from CalssRoom where id = 1 这个应该和hibernate的抓取策略相关具体还要深入理解

三、增删改(这个和hibernate的级联操作相关,这里注解@OneToMany/@ManyToOne中没有声明级联操作)
目前只用过新增
新增一个ClassRoom 创建对象设置对象属性值然后保存
新增一个Student 创建对象设置对象数据然后设置ClassRoom类型的字段 这个在保存到数据库时表class_room_id列就会用这个对象的id字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值