为公司之前的一个公交卡系统修改bug: 通过排查发现, 卡类型表和卡等级表是一对多的关系, 但是卡等级表中没有字段引用卡类型表的主键,而是引用了卡类型表中非主键的另外两个字段

通过查看hibernate实战这本书, 发现property-ref可以解决这个问题

property-ref: 是为了解决遗留系统中实体之间的关联,通过它指定被关联实体主键以外的字段作为关联字段。

这里记录下我的修改:

1.修改卡类型

修改卡类型实体的映射文件

<-- 卡类型表的两个字段 agentid  和  cardtype
       properties 标签可以同时指定两个字段

 -->
<properties name="agentidAndCardtype" unique="true" update="false">
            <property name="agentid" type="java.lang.String">
                <column name="AGENTID" length="3" not-null="true" />
            </property>
            <property name="cardtype" type="java.lang.String">
                <column name="CARDTYPE" length="3" not-null="true" />
            </property>
</properties>

2.修改卡等级

首先是卡等级实体的修改:

/**
* 卡等级表实体类:  agentids和cardtype引用的是卡类型表的字段,  用卡类型表的实体代替这两个字段
*/

//    private String agentids;
//    private String cardtype;
    private Acardtype cardtype;

在是卡等级实体映射文件的修改:

<-- 卡等级表
     property-ref:使用此属性引用需要的字段

 -->

<many-to-one name="cardtype" class="com.foorich.entity.oracle.Acardtype" fetch="select" property-ref="agentidAndCardtype">
              <column name="AGENTID" length="3" not-null="true" />
              <column name="CARDTYPE" length="3" not-null="true" />
</many-to-one>

这样修改之后, cardtype 就相当于一个关系属性了, 通过cardtype.agentids  和 cardtype. cardtype,可以使用这个两个字段

最新文章

  1. vs中使用git
  2. C#实现对Windows 服务安装
  3. Linux默认权限的计算公式(个人理解性的笔记~)
  4. ORACLE8.07客户端配置指南
  5. Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
  6. 华为p7怎么打开usb调试模式
  7. UVa 10878 Decode the tape
  8. lintcode : 二叉树的序列化和反序列化
  9. 现在网页中流行的css3样式
  10. C++中类的大小计算方法总结《网络+总结》
  11. python3中socket套接字的编码问题解决
  12. 移动应用开发者最应该知道的8款SDK
  13. 《java.util.concurrent 包源码阅读》17 信号量 Semaphore
  14. 小程序:navigateBack()修改数据
  15. php7 闭包调用
  16. Git merge 不同的branch
  17. Get、Post 提交的乱码问题
  18. 16款纯CSS3实现的loading加载动画
  19. elasticsearch索引路径规则
  20. 2008ZJOI树的统计

热门文章

  1. Android进度条学习
  2. [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
  3. You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
  4. redis 集群配置实战
  5. java实现文件变化监控
  6. C++ 用宏实现swap(a,b)
  7. Java 多态
  8. linuxx virutal machine installation
  9. Eclipse debug断点调试代码时出现source not found问题
  10. EF6 的性能优化