`
oiunt
  • 浏览: 8423 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hibernate映射字段注解位置的不同造成插入数据库结果不同

阅读更多
如下两段hibernate实体代码:

@Entity
@Table(name = "NumberIncrement")
public class NumberIncrementModel implements Serializable {

	/**
	 * serialVersionID.
	 */
	private static final long serialVersionUID = -1555659864049096945L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long id;

	@Column(name = "NUMBER_INCREMENT")
	private Integer numberIncrement;

	public NumberIncrementModel(Integer numberIncrement) {
		this.numberIncrement = numberIncrement;
	}

}



@Entity
@Table(name = "JBPM4_NUMBER_INCRECMENT")
public class NumberIncrementModel implements Serializable {

	/**
	 * serialVersionID.
	 */
	private static final long serialVersionUID = -1555659864049096945L;

	private Long id;

	public void setId(Long id) {
		this.id = id;
	}

	public void setNumberIncrement(Integer numberIncrement) {
		this.numberIncrement = numberIncrement;
	}

	private Integer numberIncrement;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() {
		return id;
	}

	@Column(name = "NUMBER_INCREMENT")
	public Integer getNumberIncrement() {
		return numberIncrement + 2;
	}

	public NumberIncrementModel(Integer numberIncrement) {
		this.numberIncrement = numberIncrement;
	}

}



第一种注解放在字段上,第二种注解放在get方法上。当执行插入操作时,数据库中记录是不同的。

NumberIncrementModel numberIncrementModel = new NumberIncrementModel(2);
XXXService.insertNumberIncrecement(numberIncrementModel);


其中第一种方式插入的记录的NUMBER_INCREMENT字段值为2,第二种为4.
从这里我们可以推论出,hibernate会根据注解的位置来觉得提取实体属性的方式:是采用标准的JavaBean的get方法,还是直接采用放射。
分享到:
评论
2 楼 oiunt 2010-11-24  
humaeks 写道
请看ejb3中关于persistence的一章,里面有说明field accessor 和property accessor的区别


谢了,看来还是要看标准的东西!
1 楼 humaeks 2010-11-22  
请看ejb3中关于persistence的一章,里面有说明field accessor 和property accessor的区别

相关推荐

    hibernate映射的注解配置

    以下是对标题和描述中涉及的Hibernate映射注解的详细解释: 1. **@Entity(name="EntityName")**:此注解用于标记一个类作为JPA实体,它代表数据库中的一个表。`name`参数是可选的,用于指定实体在数据库中的表名,...

    使用注解javaBean关联数据库字段

    - Hibernate:通过Hibernate的注解API,可以直接在JavaBean中定义数据库映射,简化ORM(对象关系映射)过程。 - MyBatis:MyBatis允许在Mapper接口和XML映射文件中使用注解,实现SQL语句的动态生成。 5. **工具...

    Hibernate注解 关联关系映射注解.docx

    在Java的持久化框架Hibernate中,注解是用于简化对象关系映射(ORM)的一种方式。本篇文章将详细探讨在Hibernate中如何使用注解来处理各种关联关系,特别是`mappedBy`属性的用法。 首先,`@OneToMany`注解用于表示...

    hibernate根据字段生成数据库表

    - **实体类**:定义 Java 实体类,并使用 Hibernate 的注解或 XML 文件描述类与数据库表之间的映射关系。 3. **示例代码**: - 给定的示例代码中,可以看到 `SchemaExport` 类的使用方式。 #### 三、核心代码...

    Hibernate 配置跟数据库字段的对应关系

    2. 使用注解或XML映射文件建立实体类字段与数据库列的映射。 3. 确定合适的Mysql数据库数据类型以满足业务需求。 4. 如需自定义类型映射,实现`UserType`接口。 了解并熟练掌握这些配置,能帮助开发者更高效地使用...

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    Hibernate全部注解

    本文档将详细介绍 Hibernate 中的注解使用方法,这些注解主要用于配置对象与数据库之间的映射关系。 #### 二、核心注解介绍 ##### 1. @Entity - **作用**:标记一个类为实体类,表示它可以被持久化到数据库中。 - ...

    hibernate使用中与各种数据库字段类型对应类型训练

    本训练主要关注在使用Hibernate时如何处理与各种数据库字段类型的映射,这对于理解和优化数据库交互至关重要。 首先,我们要理解Hibernate的核心概念——对象关系映射(ORM)。ORM允许我们将数据库表结构映射到Java...

    hibernate映射枚举类型

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了一种优雅的方式来映射枚举类型到数据库。本文将深入探讨Hibernate如何映射枚举类型,并给出实际应用示例。 ### Hibernate枚举映射方式 #### 1. `@...

    Hibernate 映射文件自动生成

    【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...

    Hibernate一对多关联映射(注解)

    在Java世界中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,将对象与数据库表之间的映射关系进行了抽象。本篇主要探讨的是Hibernate中的一对多关联映射,它允许一个实体对象对应数据库...

    hibernate映射和查询

    **hibernate映射与查询** Hibernate 是一个流行的 Java 应用程序开发框架,它提供了一个持久层解决方案,简化了数据库操作。对于初学者来说,理解 Hibernate 的映射和查询机制是至关重要的,因为它们构成了 ...

    hibernate双向多对多关联映射(注解版)

    在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...

    Hibernate一对一关联映射(注解)

    综上所述,Hibernate的一对一关联映射通过注解方式提供了便捷的数据库表与Java对象之间的绑定,理解并正确使用这些注解对于优化数据访问性能、保证数据一致性至关重要。在设计数据库模型时,应充分考虑实体之间的...

    JAVA数据类型与Hibernate的类型映射

    此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,并使用@Id注解指定主键字段,可以将一个Java类映射到数据库的一张表。字段则通过@Column注解来指定列名和属性,如长度、...

    hibernate4全注解例子

    常见的注解包括@Entity(定义实体类)、@Table(指定表名)、@Id(主键)、@GeneratedValue(生成策略)、@Column(字段映射)、@OneToMany、@ManyToOne、@OneToOne和@ManyToMany(关联映射)等。 3. **环境设置**...

    Spring+Hibernate 自动映射

    1. **对象关系映射**:Hibernate通过XML映射文件或注解,将数据库表与Java对象对应起来,实现了数据库操作的对象化,使得开发者可以像操作普通Java对象一样操作数据库记录。 2. **查询语言(HQL)**:Hibernate提供...

    hibernate属性级别注解实例代码

    Hibernate属性级别注解是Hibernate ORM框架中用于在Java对象(实体类)的属性上定义数据库映射的关键元素。这些注解使得开发人员能够无需XML配置文件就能声明对象与数据库之间的映射关系,从而简化了开发过程。以下...

Global site tag (gtag.js) - Google Analytics