HIbernate的property-ref属性
2024-10-19 00:23:06
为公司之前的一个公交卡系统修改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,可以使用这个两个字段
最新文章
- vs中使用git
- C#实现对Windows 服务安装
- Linux默认权限的计算公式(个人理解性的笔记~)
- ORACLE8.07客户端配置指南
- Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
- 华为p7怎么打开usb调试模式
- UVa 10878 Decode the tape
- lintcode : 二叉树的序列化和反序列化
- 现在网页中流行的css3样式
- C++中类的大小计算方法总结《网络+总结》
- python3中socket套接字的编码问题解决
- 移动应用开发者最应该知道的8款SDK
- 《java.util.concurrent 包源码阅读》17 信号量 Semaphore
- 小程序:navigateBack()修改数据
- php7 闭包调用
- Git merge 不同的branch
- Get、Post 提交的乱码问题
- 16款纯CSS3实现的loading加载动画
- elasticsearch索引路径规则
- 2008ZJOI树的统计
热门文章
- Android进度条学习
- [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
- You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
- redis 集群配置实战
- java实现文件变化监控
- C++ 用宏实现swap(a,b)
- Java 多态
- linuxx virutal machine installation
- Eclipse debug断点调试代码时出现source not found问题
- EF6 的性能优化