- 浏览: 141326 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (137)
- J2SE API基础 (19)
- JAVA Structure/Algorithm (1)
- 设计模式及UML(pd/rose) (11)
- SSH (32)
- JPA/EJB/JSF (0)
- Jsp/Servlet (1)
- XML (0)
- DWR/Dojo/JQuery(Ajax) (1)
- Js/css/HTML (3)
- Java报表开发 (0)
- 网络协议及认证加密算法 (2)
- Java多线程网络编程 (1)
- Lucence (0)
- Oracle Developer (5)
- Oracle DBA (3)
- mysql/SQLServer/DB2 (5)
- Weblogic配置/调试 (0)
- Tomcat/JBoss/Websphere (10)
- Linux/Unix操作部署及shell编程 (9)
- C/C++编程 (4)
- 系统分析 (0)
- 项目管理(CVS&风险控制) (0)
- JUnit单元和J2EE集成测试 (2)
- 软设/招聘 (6)
- IT English (8)
- Mathematics/Data Mining (1)
- Android开发爱好 (1)
- Flash制作爱好 (0)
- Professional wisdom (4)
- 序言 (1)
- 聊天记录 (0)
- 理想 (3)
- 承诺 (0)
- oifuslfjsldkj_chatrecord (1)
最新评论
-
blues1021:
dafeiwudi 写道什么叫外频和陪频啊?一般电脑都显示主频 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系 -
dafeiwudi:
什么叫外频和陪频啊?一般电脑都显示主频,它不表示运算速递,我们 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系
在引入了或声明了相关表或类后就能够使用它下面的方法,例如:
(1)@Table(name = "bsp_corp_spl", catalog = "bspdb")
(2)private BspCorpSplId id;
private BspCorp bspCorp;
因为要在dao类中使用HQL语句实现SELECT * FROM Table1 t1 WHERE t1.id.name=? AND t1.id.email=?
选出复合主键类的所有记录;所以要在类中实现get整体的方法,此时使用了复合主键类;
复合主键类给出实现equal,hashcode方法。
一、参照实体之间@OneToMany
1、在被参照端的POJO类中注释:
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="bspCorp")//单向的声明被参照类
,联级在被参照端声明?
public Set<BspMySplContact> getBspMySplContacts() {
return this.bspMySplContacts;
}
2、参照端的注释:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CORP_ID", nullable = false, insertable = false, updatable = false)//使用被参照类主键作为外键。
public BspCorp getBspCorp() {
return this.bspCorp;
}
@AttributeOverrides由多个@AttributeOverride注释组成,每个@AttributeOverride表示属性的映射,它的定义如以下所示:
@Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
public @interface AttributeOverride {
String name();
Column column();
}
二、复合主键实体类调用嵌套类:
在使用@AttributeOverride注释应注意以下几方面的问题:
1、了解嵌入类字段的含义
name属性表示被嵌入类中的属性名称。
column属性表示,对应所要嵌入的实体类的表,其中的name 为列字段的名称。
例如将tb_customer表中的customer_zip字段映射为Address嵌入类中的属性zip。代码如下所示:
@AttributeOverride(name = "zip",
column = @Column(name = "customer_zip")
)
2、嵌入类可以多次被引用
使用嵌入式类的好处是:多个实体中都可以共享一个嵌入式类,方便了对实体的操作。
例如现在ContactEO也嵌入Address类,就很方便的映射为以下所示:
public class CustomerEO implements Serializable {
private Integer id;
private String name;
private String nickname;
……getter和setter方法省略
private Address address;
@Embedded
@AttributeOverrides( {
@AttributeOverride(name = "zip", column = @Column(name = "contact_zip")),
@AttributeOverride(name = "line1", column = @Column(name = "contact_line1")),
})
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
三、实现复合主键嵌套类中的定义:
package com.bsp.entity;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
/**
* BspCorpSplId entity.
* @author Java Web2.0项目开发进阶宝典
*/
@Embeddable
public class BspCorpSplId implements java.io.Serializable {
// 字段属性
private String corpId;
private String spl;
/**默认构造器 */
public BspCorpSplId() {
}
@NotNull(message = "编号不能为空")
@Length(min = 1, max = 5, message = "编号长度应在1至5之间")
@Column(name = "CORP_ID", nullable = false, length = 5)
//因为在调用了嵌套类的实体类中已经将其初始化,所以此处的字段为已知
public String getCorpId() {
return this.corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
@Column(name = "SPL", nullable = false, length = 5)
public String getSpl() {
return this.spl;
}
public void setSpl(String spl) {
this.spl = spl;
}
public boolean equals(
Object other) {//要实现的两个方法
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof BspCorpSplId))
return false;
BspCorpSplId castOther = (BspCorpSplId) other;
return ((this.getCorpId() == castOther.getCorpId()) || (this
.getCorpId() != null
&& castOther.getCorpId() != null && this.getCorpId().equals(
castOther.getCorpId())))
&& ((this.getSpl() == castOther.getSpl()) || (this.getSpl() != null
&& castOther.getSpl() != null && this.getSpl().equals(
castOther.getSpl())));
}
public int hashCode() {
int result = 17;
result = 37 * result
+ (getCorpId() == null ? 0 : this.getCorpId().hashCode());
result = 37 * result
+ (getSpl() == null ? 0 : this.getSpl().hashCode());
return result;
}
}
发表评论
-
Unity3DHouse中成功删除信息
2011-08-10 01:12 817//在jsp页面传入的参数在Action类中调用deleteH ... -
hibernate3.0中实现修改数据记录
2011-08-10 01:11 6861.查询页面中传入参数: <a href=& ... -
Unity3DHouse4项目save(object1)到库问题的解决
2011-08-10 01:10 7091.添加时点击没有任何响应和提示,google了一遍有说是 ... -
Unity3DHouse4系统未解问题
2011-08-10 01:08 7991.struts1.2+spring 2.2+Hibern ... -
Struts表单提交的text String数据可以作为HQL中的Integer类型处理
2011-08-10 01:06 8761.传入数据的表单中的声明 :<form metho ... -
6月28日房产的登录模块报错
2011-08-10 01:04 8251.JSP语法报错 exception org.ap ... -
struts的jsp Action中传入EL表达式参数及myeclipse操作技巧(涛)
2011-08-10 01:03 8791.<a href="/searchBuild ... -
Struts标签之Cannot find bean under name org.apache.struts.taglib.html.BEAN错误
2011-08-10 01:02 1293Cannot find bean under name ... -
【转】关于在HQL中的模糊查询问题
2011-08-10 01:02 781来自:20 ... -
Struts中的Action二次请求不认路径../的解决方法
2011-08-10 01:00 847地址栏没有了项目名称:http://localhost:808 ... -
myEclipse项目部署问题之解决方法
2011-08-10 00:58 1012myeclipse下工程: 1.安装myclipse时6.5 ... -
Strut2的属性驱动,模型驱动的理解
2011-08-10 00:58 1079因为在struts1的版本中,属性的拦截以及控制的处 ... -
【转】hibernate的@EmbeddedId嵌入式主键类详解
2011-08-10 00:56 1042复合主键也可以采用 ... -
Spring 2.*有注释的配置文件中各层配置详解
2011-08-10 00:55 854<?xml version="1.0" ... -
Spring 2.5注释程序执行过程和融合xml使用
2011-08-10 00:54 831Spring2.5注释 一、加载Spirng容器,在web. ... -
【转】Struts2注解使用解析
2011-08-10 00:54 810如果希望使用 struts2 ... -
《转》struts.xml 模块化管理
2011-08-10 00:52 819... -
《转改》Struts2和Spring的集成原理
2011-08-10 00:50 6902009年09月02日 星期三 下午 ... -
房产销售系统的服务器配置问题?
2011-08-10 00:48 705Tomcat在外面的安装时抛出404找不到资源,测试后 ... -
《学生选课系统课程设计》提交过程的感悟
2011-08-10 00:46 768今天去提交数据库课程设计,昨晚把数据库安装了一晚JDK,m ...
相关推荐
在复合主键类中,我们需要实现 Serializable 接口,以便 Hibernate 框架可以正确地序列化和反序列化复合主键。 复合主键在 Hibernate 中的使用 在 Hibernate 中,我们可以使用复合主键来唯一标识一个实体。例如,...
复合主键(Composite Key)是指由两个或更多个列共同组成的主键,这些列的组合具有唯一性,确保了数据的完整性。在数据库设计中,复合主键是解决某些特定情况下的有效手段。 二、Hibernate中的复合主键配置 在...
在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本教程将深入探讨如何在Hibernate中设置复合主键,并提供一个可直接使用的配置示例。 ...
在Hibernate中,我们可以通过实现`Serializable`接口并使用`@Embeddable`和`@EmbeddedId`注解来定义和管理复合主键。 首先,我们需要创建一个代表复合主键的类。例如,对于订单明细表,我们可以创建一个名为`...
在Hibernate中,对无主键表的操作与普通实体基本相同,只是在保存和查询时需要传入整个复合主键对象。例如,创建一个新的订单: ```java OrderKey key = new OrderKey(); key.setCustomerId("123"); key.setOrderId...
在Hibernate中,注释是一种强大的工具,可以简化配置,使得代码更加简洁易读。本篇文章将深入探讨Hibernate注释的使用。 1. **属性和方法注解** Hibernate允许对类的属性或方法进行注解,以声明它们与数据库表的...
在实体类(如`UserRole`)中,我们需要使用`@IdClass`注解指定复合主键类,并为每个主键字段添加`@Id`注解。例如: ```java import javax.persistence.Entity; import javax.persistence.Id; import javax....
在实际开发中,根据具体需求调整实体和复合主键类的属性,以满足业务场景。 四、总结 复合主键在多字段标识的情况下非常有用,它可以保证数据的完整性。在Hibernate中,通过定义`@Embeddable`的复合主键类和`@...
**正文** Hibernate是一款广泛应用于Java开发中的对象关系映射(ORM)框架,它极大地简化了数据库操作。...在实际项目中,选择合适的复合主键实现方式以及正确地进行持久化操作,是确保数据一致性与完整性的关键。
然而,在实际开发过程中,我们可能会遇到一些问题,比如在处理`hbm.xml`文件中的中文注释时出现乱码,或者希望自动生成的实体类中包含有详细的注释。本文将详细介绍如何利用`Hibernate-tools`来解决这些问题,以`...
如果使用Hibernate开发legacy的数据库应用,对于数据库表中有使用字符串作为主键或者使用复合主键情况,那么对于这些情况的影射档是比较麻烦的。该示例应用演示了两张表ITEM和CATEGORY_ITEM表有主外键关系,并且ITEM...
复合主键是指由两个或多个字段共同组成的数据表主键,它可以更好地满足业务需求,并提高数据的一致性和完整性。本文将详细介绍Hibernate中如何支持数据库的复合主键。 #### 二、复合主键的概念 在关系型数据库中,...
hibernate注释详解 内含hibernate各种注释说明
请更名为 Hibernate复合主键.part2.rar
本章讲解Hibernate中对数据库复合主键的支持
更名为 Hibernate复合主键.part3.rar
在Java的Hibernate框架中,复合主键映射是一种处理多列组合成主键的情况,它使得在数据库表中由两个或更多个字段组成的主键能够被正确地映射到实体类。在使用复合主键时,我们需要遵循一定的步骤和规则。 首先,...