`
YaLove
  • 浏览: 5235 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

Hibernate"discriminator-value"用法(转)

阅读更多
可能经常遇到这样的情况:
       在数据库表中会有这样的一个字段用来区别记录的属性,如:在客户表中有一个字段表示客户级别,当这个记录为A时是一级客户,为B时是二级客户。在用 hiberante做OR表示时类可能是这样的:
       public class Customer{
          private String flag;   //表示客户的级别
          ...
       }  
       然后,在程序中手动控制flag的值,但是这样当每个级的客户有不同的属性时Customer类将包含所有级别的属性,这样不是很好。
       hibernate提供一个Discriminator映射的方法,就是把一个表映射成不同的类,有不同的属性。
       public class Customer{
          //包含所有级别的公共属性
          ...
        }

       public class CustomerA extends Customer{
       //只包括一级客户的特有属性
        }
       public class CustomerB extends Customer{
       //只包含二级客户特有的属性
        }
这样更符合面向对象的原则,然后在hbm.xml中这样写:
<id name="id" type="int">
    ...
</id>
<discriminator column="flag" type="string" />
<!-- 公共属性的映射 -->
<subclass name="CustomerA" discriminator-value="A">
<!-- 一级客户特有属性的映射 -->
</subclass>
<subclass name="CustomerB" discriminator-value="B">
<!-- 二级客户特有属性的映射 -->
</subclass>
这样就可以单独的用CustomerA,CustomerB这样的实例了,做数据库修改时 就不用关心flag字段的值了,会自动的加A或B。
如果是使用hibernate Annotation而不是xml来描述映谢关系,代码如下:
@Entity
@Table(name = "customer")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "flag", discriminatorType = DiscriminatorType.STRING)
public class Customer{
}
@Entity
@DiscriminatorValue(value = "A")
public class CustomerA extends Customer{
}
@Entity
@DiscriminatorValue(value = "B")
public class CustomerB extends Customer{
}
这样就可以了。
分享到:
评论

相关推荐

    Key-value存储简介

    Key-value存储是一种非关系型数据库模型,主要用于处理大量数据存储,尤其适合于互联网公司面对的高可用性、可扩展性的需求。传统的关系型数据库在处理海量数据和主键查询时可能会遇到性能瓶颈,而Key-value存储则能...

    snp.rar_ snp_SNP p-value_snp_snp p value_snp qq p-value plot

    综合以上,这个压缩包内容涉及到的IT知识主要包括数据压缩技术、生物信息学分析、统计学方法(如P-value计算和假设检验)、以及数据可视化(如QQ图)。这些知识在现代遗传学研究中扮演着核心角色,帮助科学家揭示...

    28.R语言绘图_ggplot2_更多分位数的箱线图letter-value的绘制方法汇总.pdf

    本文主要介绍了使用R语言和ggplot2包绘制更多分位数的箱线图letter-value的方法,并对其优势进行了详细的解释。箱线图是一种常用的数据可视化方法,但是它在展示数据分布时往往存在局限性,例如异常值多、数据分布不...

    spring-data-keyvalue-2.5.5-API文档-中文版.zip

    赠送jar包:spring-data-keyvalue-2.5.5.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    论文研究-一种基于key-value数据库的快速地名地址输入提示方法.pdf

    针对以上问题,提出一种基于key-value数据库的快速地名地址输入提示方法。该方法基于Trie树结构进行改进,降低了地址索引的复杂度;基于key-value数据库构建Trie树,避免了内存消耗巨大的问题。实验结果表明,基于...

    Python-Excel选表头列key-value-转json文件

    资源名称:Python—Excel选表头列key-value-转json文件 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1. 点击按钮【选择文件】:选择一个Exel文件(默认第一行为表头) 2. 点击选择key列(可多选-...

    什么叫key-value数据库

    想要明白什么是key/value数据库,就必须了解哈希表(Hash Table)这种数据结构。 比如,Berkley DB就是典型的key/value数据库。

    AngularJS ng-value 指令-AngularJS 实例.zip

    1. **ng-value基本用法** ng-value指令的语法是在HTML元素上添加`ng-value`属性,并将AngularJS表达式作为其值。例如: ```html &lt;input type="text" ng-value="myModel"&gt; ``` 这里,`myModel`是AngularJS中的一...

    Python-Excel选表头列key-value-转json文件(calamine版本)

    资源名称:Python—Excel选表头列key-value-转json文件(calamine版本) 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1. 点击按钮【选择文件】:选择一个Exel文件(默认第一行为表头) 2. 点击选择...

    spring-data-keyvalue-2.3.9.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-keyvalue-2.3.9.RELEASE....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    stylelint-z-index-value-constraint:用于设置z索引的最小和最大约束值的Stylelint规则

    stylelint-z-index-value-constraint 用于设置z索引的最小和最大约束值的Stylelint规则。 这是插件的分支。 安装 npm install stylelint-z-index-value-constraint --save-dev 或者 yarn add stylelint-z-index-...

    分布式key-value存储系统入门

    分布式key-value存储系统入门,详细介绍cassandra系统

    AngularJS ng-value 指令____AngularJS 实例.zip

    在描述中提到的`AngularJS ng-value 指令____AngularJS 实例.zip`文件,可能包含了多个示例,如`AngularJS ng-value 指令____AngularJS 实例.pdf`,该文档很可能详细解释了`ng-value`的用法,并提供了代码实例。...

    spring-data-keyvalue-2.0.9.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-data-keyvalue-2.0.9.RELEASE.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心

    gkvlite, go语言的简单有序key-value 持久库.zip

    gkvlite, go语言的简单有序key-value 持久库 gkvlitegkvlite是一个简单。有序。ACID 。key-value 持久化库。 概述gkvlite是一个提供简单 key-value 持久性存储的库,它受SQLite和 couchdb/couchstore启

    spring-data-keyvalue-2.6.1-API文档-中文版.zip

    赠送jar包:spring-data-keyvalue-2.6.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    “Key-Value_Memory_Networks_for_Directly_Reading_Do_key-value-Me

    “Key-Value_Memory_Networks_for_Directly_Reading_Do_key-value-MemNN

    云计算系统中Key-Value数据管理研究.pdf

    Key-Value数据模型是一种简单的非关系型数据存储模型,它使用键值对, value&gt;的方式存储数据,其中key是唯一标识符,value是与之对应的值。这种模型的特点是数据结构简单,查询和插入操作效率高。在云计算和大数据...

    unset-value:使用点表示法从对象中删除嵌套属性

    用法 var unset = require ( 'unset-value' ) ; unset ( obj , prop ) ; 参量 obj {对象}:该对象到未设置prop上 prop {string | string []} :要设置的属性。 可以使用点符号或嵌套属性的数组。 例子 删除属性时...

Global site tag (gtag.js) - Google Analytics