`
jiaguwen123
  • 浏览: 413473 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

composite-id 学习

阅读更多

组件作为联合标识符,必须满足:
它必须实现java.io.Serializable接口
它必须重新实现equals()和hashCode()方法, 始终和组合关键字在数据库中的概念保持一致
你不能使用一个IdentifierGenerator产生组合关键字。一个应用程序必须分配它自己的标识符。
【注意:在Hibernate3中,第二个要求并非是Hibernate强制必须的。但最好这样做。】

 <class name="com.jason.compositeId.OrderDetail" table="t_orderdetail">
  <composite-id name="id" class="com.jason.compositeId.CompositeId">
      <key-property name="orderId" column="order_id" />
      <key-property name="itemId" column="item_id" />
  </composite-id>
  <property name="count" column="count" type="int" />
 </class>


 <!--
  create table t_orderdetail ( order_id bigint not null, item_id bigint not null, count bigint not null, primary key(order_id, item_id) )
 -->
 



 
public class CompositeId implements Serializable{
 private int orderId;
 private int itemId;
 public int getItemId() {
  return itemId;
 }
 public void setItemId(int itemId) {
  this.itemId = itemId;
 }
 public int getOrderId() {
  return orderId;
 }
 public void setOrderId(int orderId) {
  this.orderId = orderId;
 }
 @Override
 public boolean equals(Object obj) {
  return super.equals(obj);
 }
 @Override
 public int hashCode() {
  return (orderId + itemId)^2;
 }
  
}

 



public class OrderDetail {
 private CompositeId id;
 private int count;
 
 public int getCount() {
  return count;
 }
 public void setCount(int count) {
  this.count = count;
 }
 public CompositeId getId() {
  return id;
 }
 public void setId(CompositeId id) {
  this.id = id;
 }
}

分享到:
评论

相关推荐

    Hibernate-CompositeKey

    **正文** 在Java开发中,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它...通过研究这个压缩包,你可以深入学习如何在实际项目中有效地使用Hibernate处理复合键,从而提升你的Java和ORM技能。

    Hibernate学习.pdf

    - **COMPOSITE-ID**: 复合主键。 - **PROPERTY**: 映射到数据库表的字段。 #### 6. 关联关系映射 - **单向关联(UNIDIRECTIONAL ASSOCIATIONS)**: - **多对一(many-to-one)**: 实体间的多对一关系。 - **一对一...

    hibernate学习笔记

    1. 使用`@IdClass`或XML中的`composite-id`定义联合主键。 2. 联合主键需要重写equals和hashCode方法,实现Serializable接口。 七、Hibernate核心接口 1. `Configuration`接口: - 提供了管理配置信息的方法,用于...

    Hibernate学习笔记_songjignhao_1

    联合主键映射涉及到多个字段共同构成主键的情况,可以使用 `&lt;composite-id&gt;` 标签来定义这些字段,并通过 `&lt;key-property&gt;` 或 `&lt;key-many-to-one&gt;` 子标签映射每个组成部分。 组件映射允许我们将一个类的属性映射...

    美国硅谷SVSE软件工程教育Hibernate-Lesson2

    - **复合主键映射**:当需要多个字段共同构成主键时,可以使用`&lt;composite-id&gt;`标签。 4. **数据操作与事务处理**: - **数据保存**:使用`save()`方法将对象持久化到数据库。 - **数据删除**:使用`delete()`...

    PLSQL存储过程学习笔记

    2. **Composite Types**(复合类型):如数组和记录。 3. **Reference Types**(引用类型):指向其他对象的引用。 4. **LOB Types**(大对象类型):用于存储大量数据,如文本、图像等。 例如: ```plsql DECLARE ...

    JPA学习总结(五)--JPACompositePK联合主键

    1. **@IdClass**:这种方式需要创建一个单独的类来表示联合主键,这个类需要实现Serializable接口,并且每个主键字段都用@Id注解标识。然后在实体类上使用@IdClass注解,指定这个主键类。 2. **@EmbeddedId**:这种...

    jpa 全面学习资料

    - **主键(Primary Key)**: 通过`@Id`注解定义,标识实体的唯一标识符。 - **关系映射(Relationship Mapping)**: 包括一对一、一对多、多对一和多对多关系,使用`@OneToOne`, `@OneToMany`, `@ManyToOne`, `@...

    hibernat非常有用的学习文档

    在映射文件中,使用 `&lt;composite-id&gt;` 标签来指定主键类,然后通过 `&lt;key-property&gt;` 标签映射各个主键字段。例如,`FiscalYearPeriod` 类的主键由 `fiscalYear` 和 `fiscalPeriod` 组成,对应的 `...

    java开发手册

    - **Composite-id**:用于联合主键映射,当表的主键由多个字段组成时使用。 - **Timestamp**:可选的属性,用于记录对象的修改时间。 - **Property**:表示Java类的普通属性,可以是基本类型或复杂类型。 6. **...

    Hibernate手册

    - **composite-id**:处理复合主键。 - **鉴别器**:在多态映射中区分子类。 - **版本**:支持乐观锁机制。 - **timestamp**:自动更新时间戳字段。 - **Property**:映射实体类的属性。 - **多对一**、**一对一**、...

    java 初始Hibernate

    - `&lt;id&gt;`和`&lt;composite-id&gt;`元素定义了主键。 - 标识符生成器(Identifier Generator)用于自动生成主键,例如`increment`、`native`、`sequence`等。 - `&lt;property&gt;`元素映射类的属性到数据库字段,包括字段类型、...

    Eclipse插件开发学习笔记(ch11-12)

    1. **定义View类**:创建一个继承自`ViewPart`的类,重写`createPartControl()`方法来创建视图的 SWT 控件,如Composite或TableViewer。 2. **注册视图**:在插件的`plugin.xml`文件中,定义视图的ID、标签、图标等...

    Hibernate中文详细学习文档

    5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) ...

Global site tag (gtag.js) - Google Analytics