`

Hibernate @Any或者@ManyToAny 的用法

 
阅读更多

原文链接:http://stackoverflow.com/questions/217831/how-to-use-hibernate-any-related-annotations

 

1:业务场景:有时我们需要映射关联属性不同类型的实体,这个时候@ManyToAny 或者 @Any就可以解决该业务场景问题。

 

2:直接上业务实例。

 

用户信息(User)、出借信息(BorrowInfo)、出借类别书本(Book)、出借类别DVD(DVD)、出借类别VHS(VHS)。

 

3:

  (1)省去用户信息

  (2)出借类别书本(Book)实体模型

 

@Entity
@Table(name = "T_BOOK")
public class Book {

	@Column(name="ID")
	private String id ;

	@Column(name="NAME")
	private String name;
	
	@Column(name="ITEM_TYPE")
	private String itemType;
	----省去Get Set方法

}

 (3)出借类别DVD实体模型

@Entity
@Table(name = "T_DVD")
public class DVD {

	@Column(name="ID")
	private String id ;

	@Column(name="NAME")
	private String name;
	
	@Column(name="ITEM_TYPE")
	private String itemType;
	
}

 (4)出借类别VHS实体模型

@Entity
@Table(name = "T_VHS")
public class VHS {

	@Column(name="ID")
	private String id ;

	@Column(name="NAME")
	private String name;
	
	@Column(name="ITEM_TYPE")
	private String itemType;
	
}

 (5)出借信息BorrowInfo实体模型设计

@Entity
@Table(name="BORROW")
public class BorrowInfo {
	
	@Column(name="ID")
	private String id;
	
	@JoinColumn(name="USER_ID")
	private User user;
	
	@Any(metaColumn = @Column(name = "ITEM_TYPE"))
        @AnyMetaDef(idType = "string", metaType = "string", 
            metaValues = { 
             @MetaValue(targetEntity = Book.class, value = "B"),
             @MetaValue(targetEntity = VHS.class, value = "V"),
             @MetaValue(targetEntity = DVD.class, value = "D")
       })
    @JoinColumn(name="ITEM_ID")
	private Object itemObj;
}

 

 补充:有些业务场景需要用到@ManyToAny,可以参见stackoverflow中的方法。

 

分享到:
评论

相关推荐

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    mis.rar_MyBeanUtils _hibernate @Finder_mis_springmvc_springmvc h

    描述 "springmvc管理hibernate," 提及了SpringMVC作为前端控制器,用于管理和协调Hibernate这个持久层框架的使用。标签 "mybeanutils_ hibernate_@finder mis springmvc springmvc_hiberna" 明确了涉及的技术组件,...

    hibernate@注解方式配置实体类,用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或引用方式都行...

    Hibernate 注解大全

    通过阅读《Hibernate注释.doc》和《Hibernate注释大全.txt》这两个文档,你可以获得更详细的信息,深入理解Hibernate注解的使用场景和配置细节。同时,参考提供的博文链接...

    hibernate-testjar包

    hibernate

    hibernate manytoone

    为了使这个关系在Hibernate中生效,还需要在Hibernate的配置文件(如`hibernate.cfg.xml`或通过Java配置)中添加相应的映射文件(`.hbm.xml`)或者使用注解驱动。在现代项目中,更常见的是使用注解驱动,因为它更...

    spring famework4整合hibernate4示例代码

    4. 配置DAO层:创建基于Spring的DAO接口和实现类,使用`@Autowired`注解注入SessionFactory,然后在方法中使用SessionFactory创建Session,进行数据库操作。 5. 事务管理:通过Spring的`@Transactional`注解,实现...

    hibernate二级缓存(包括注解方式)

    **hibernate二级缓存详解(包括注解...综上所述,理解并正确使用Hibernate的二级缓存能显著提升应用性能,但需注意其适用场景及潜在风险。在实际项目中,结合具体业务需求,灵活调整缓存策略,才能最大化发挥其优势。

    Hibernate JavaDoc (4.2.1.Final) chm

    文档来自于Hibernate官网,希望能帮助别人。

    hibernate.properties配置文件

    hibernate链接数据库的详细配置信息,包含各种数据库的链接方式

    @hibernate Tag Reference

    本文档旨在提供一个全面的@hibernate Tag参考指南,帮助开发人员更好地理解和使用这些标签。 #### 一、@hibernate Tag for Class Level 在类级别上应用@hibernate Tag可以定义持久化类的属性和行为。 ##### 1.1 @...

    Hibernate注解用法总结

    本文主要总结了Hibernate中常见的注解用法,涵盖了类级别和属性级别的注解,以及与主键和非主键相关的注解。 1. 类级别注解: - `@Entity`: 这个注解是必不可少的,它告诉Hibernate一个Java类是一个实体,可以映射...

    使用hibernate封装方法

    标题“使用Hibernate封装方法”暗示我们将讨论如何在项目中通过封装Hibernate操作,以提高代码的复用性和可读性。通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作...

    HibernateDemo(hibernate基本用法演示)

    `HibernateDemo(hibernate基本用法演示)` 是一个针对 Hibernate 框架的基础操作示例项目。Hibernate 是一款强大的 Java ORM(对象关系映射)框架,它允许开发者在 Java 应用程序中以面向对象的方式处理数据库交互,...

    Hibernate注解详解(超全面不解释).pdf

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。本文将详细解析Hibernate中的注解使用,帮助理解如何通过注解简化数据库操作。 首先,实体Bean是...

    hibernate-bug-1:演示在将@MapKey与映射到@SecondaryTable的目标属性一起使用时在Hibernate中的错误

    5. **Hibernate内部处理**:Hibernate的内部实现可能存在对这种组合使用方式的支持不足,可能会导致解析异常或者在保存、更新和加载对象时出现问题。 为了解决这个问题,开发者可以尝试以下策略: - **重新设计...

    hibernate annotation hibernate3

    本篇将深入探讨Hibernate 3版本中的注解使用,帮助开发者理解如何利用注解进行数据持久化,提高开发效率。 一、Hibernate 3简介 Hibernate 3是Hibernate ORM框架的一个重要版本,它引入了许多新特性,如对JPA(Java...

    hibernate3 hibernate3

    Hibernate3 是一个强大的Java持久...理解并熟练掌握Hibernate3的核心概念和使用方法,对于任何Java开发者来说都是必要的技能。在实际项目中,正确配置和使用Hibernate,可以有效地实现数据的持久化,同时降低维护成本。

    hibernate-4.3.5 与Spring(Spring MVC4.0.4)注解方式集成

    8. **查询注解**:Hibernate的HQL或JPQL可以通过`@Query`注解直接在DAO方法中写入,也可以使用`@NamedQuery`在实体类中预定义查询。 9. **测试**:通过JUnit进行集成测试,验证整个流程的正确性,包括数据的CRUD...

    hibernate更新数据方法小结

    Session session=HibernateSessionFactory.getSession(); String sql=”from Usertable as user where user.username=?”; Query q=session.createQuery(sql); q.setString(0,username); List l=q.list(); Iterator...

Global site tag (gtag.js) - Google Analytics