Hibernate对同表中存在上下级关联关系的映射处理
2014-12-25 17:45
141 查看
如:权限管理的Resource资源,有上下级关联关系的映射
Hibernate实体类书写(toString 方法不要加入两个关联关系的映射)
测试代码
Hibernate实体类书写(toString 方法不要加入两个关联关系的映射)
import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name="resource") @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Resource { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(nullable=true) private String name; @Column(nullable=true) private String address; @ManyToOne(cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.LAZY) @JoinColumn(name = "parentId") private Resource parent; @OneToMany(mappedBy = "parent", cascade = { CascadeType.REMOVE }, fetch = FetchType.LAZY) private List<Resource> childs; //省略get set }
测试代码
public class Test1 { private static Configuration configuration = null; private static SessionFactory sessionFactory = null; private static org.hibernate.service.ServiceRegistry serviceRegistry = null; private static Session session = null; static{ configuration = new Configuration(); configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/test?characterEncoding=utf-8"); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); session = sessionFactory.getCurrentSession(); } public static void main(String[] args) throws Exception { session.beginTransaction(); Resource r = (Resource)session.get(Resource.class, 9); System.out.println(r.getParent()); Resource rr = (Resource)session.get(Resource.class, 1); System.out.println(r.getChilds()); } }
相关文章推荐
- Hibernate的关联关系映射
- 数据表/字段名称和数据库关键字冲突在Hibernate映射中的处理办法
- Hibernate 实体关联关系映射----总结
- Hibernate关联关系映射 一对一 一对多 多对一
- Hibernate关联关系映射实例速查
- Hibernate 3.2 学习笔记 映射实体关联关系
- 精通Hibernate——映射一对多关联关系
- Hibernate 实体关联关系映射----总结
- Hibernate和JPA使用连接表处理多对一映射
- Hibernate one to many 关联关系映射
- 分析Hibernate映射的关联关系
- hibernate映射总结详解: 映射多对一单向关联关系
- Hibernate 实体关联关系映射----总结
- Hibernate 实体关联关系映射
- hibernate映射总结详解: 按主键映射一对一关联关系
- Hibernate的关联关系映射
- Hibernate关联关系映射实例速查
- hibernate映射总结详解: 映射一对多双向自身关联关系
- Hibernate关联关系映射之一对一
- hibernate中关联关系的映射