在这次的项目中model中某些类的状态使用的是枚举类型。可是当我保存的时候保存的全是枚举中的序列,通过查资料发现一种解决方案为:
枚举类型:
Hibernate和EJB3.0支持基本类型,但是hibernate 注解还支持内置的枚举类型映射到一个顺序列或一个字符串类型的列。默认是保存枚举类型的序列值,但是你可以通过@Enumerated注解来进行调整。
保存数据为字符串类型
@Enumerated(value=EnumType.STRING)
private DateStatus status;
保存数据库为数字类型
@Enumerated(value=EnumType.ORDINAL)
其它需要注意的地方::
时间类型:
在和姓java API中 并没有定义时间精度,因此处理时间数据时,你需要定义将其存储在数据库中所预期的精度,在数据库中表示时间的数据有DATE,TIME和TIMESTAMP 三种精度(单纯的日期,时间或者两种兼容),可以使用@Temporal注解来调整精度。
默认为TIMESTAMP 类型,常用的类型为Date
/**
* 起始时间
*/
@Temporal(TemporalType.DATE)
private Date startDate;
大数据类型:
@Lob注解表示属性将被持久化为Blob或者Clob,具体取决于属性的类型,java.sql.Clob,char[] ,Character[]和String 这些类型都为Clob类型。而java.sql.Blob,byte[],Byte[]和serializable类型被持久化为Blob类型。
如果某个属性实现了java.io.Serializable同时不是基本数据类型。并且没有在该属性上使用@Lob注解,那么Hibernate将使用自带的serializable类型。
备注:项目中由于某些同时使用对象,同时没有使用java.io.Serializable和注解,数据中产生相应的@Lob这样的大数据类型
分享到:
相关推荐
Hibernate提供了一个专门用于枚举类型映射的类`org.hibernate.type.EnumType`。通过这个类,我们可以选择将枚举实例的`name`或者`ordinal`映射到数据库。具体的配置是在Hibernate的映射文件(通常是.hbm.xml文件)中...
在Java编程中,枚举类型(Enum)是一种强大的工具,它可以提供固定的、预定义的值集合,常用于表示有限数量的状态或选项。在关系数据库中,我们可能也需要将这些枚举值存储为列的特定类型。Hibernate,作为Java中...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑层解耦,提高代码的可维护性和可扩展性。在Hibernate3.2版本中,对枚举类型的支持得到了显著增强,引入了更...
在Java的持久化框架Hibernate中,数据对象与数据库表之间的关系映射是非常关键的一个环节。本主题主要聚焦于如何利用Hibernate处理集合类型的属性,包括Set、List和Map。这些集合类型的映射允许我们在一个实体类中...
Hibernate作为Java领域中最流行的ORM(对象关系映射)框架之一,极大地简化了数据库操作。本篇将详细探讨`hibernate-annotations-3.4.0.GA`和`hibernate-entitymanager-3.4.0.GA`这两个版本中的核心知识点,尤其是...
Java JDBC(Java Database Connectivity)是Java编程语言与各种数据库交互的一种标准接口,它允许Java开发者在应用程序中执行SQL...在实际项目中,还可以考虑使用ORM框架如Hibernate或MyBatis,进一步简化数据库操作。
在Hibernate中,注解是声明对象与数据库表之间映射关系的主要方式。以下是对描述中提到的几个关键注解的详细说明: 1. **@Entity**:此注解标记一个类为Hibernate的实体Bean,表示该类的对象将被映射到数据库中的一...
在 Hibernate 中,可以通过 `@Entity` 注解将 Java 类标记为实体类,表示这个类将与数据库中的某个表对应。例如: ```java @Entity public class Flight implements Serializable { Long id; @Id public Long ...
在 Hibernate 中,可以通过使用注解来映射对象与数据库表之间的关系,从而实现 ORM(对象关系映射)。这种方式避免了大量的 XML 配置工作,使得开发更为简洁高效。 #### 二、版本说明 根据提供的部分内容,文档...
**实体Bean**是Hibernate框架中的核心概念之一,指的是那些被持久化的Java对象。在Hibernate中,通过使用`@Entity`注解来标记某个Java类,使其成为实体Bean。 ```java @Entity public class Flight implements ...
持久化枚举(Persistent enum)类型 5.2.4. 自定义值类型 5.2.5. 映射到"任意"(any)类型 5.3. SQL中引号包围的标识符 5.4. 映射文件的模块化(Modular mapping files) 6. 集合类(Collections)映射...
在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。本文将详细解析Hibernate中的注解使用,帮助理解如何通过注解简化数据库操作。 首先,实体Bean是...
- **获取SessionFactory**:说明了如何创建并获取SessionFactory实例,它是Hibernate框架中用于构建Session的工厂。 - **用户自行提供JDBC连接**:介绍了当使用外部数据库连接池时,如何在Hibernate中指定这些连接。...
在本文档中,我们将深入探讨Hibernate的一些核心概念和配置选项,以便更好地理解和应用这个框架。 首先,`hibernate.hbm2ddl.auto`是一个重要的配置属性,它控制了Hibernate在SessionFactory创建时如何与数据库交互...
在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,使得开发者可以方便地在Java对象与数据库表之间建立映射。为了简化配置,Hibernate引入了注解机制,允许开发者在Java类和类的属性上直接标注,以...
10. `@Enumerated(EnumType.STRING)`:这个注解用于将枚举类型存储为字符串,例如`getNote()`方法,它将`Starred`枚举类型存储为数据库中的字符串。 11. `@Lob`:用于标记大对象(LOB)字段,如`getFullText()`和`...
- **用途**:标记实体类中的属性不会被 Hibernate 持久化。 - **示例**: ```java public class Flight implements Serializable { private transient int counter; // 不被持久化的属性 private String ...
Hibernate Types存储库为您提供了Hibernate ORM核心不支持的其他类型和通用实用程序。 该项目的主要优点是它支持从Hibernate 4.1到Hibernate 5.4的各种Hibernate版本。 产品特点 JSON格式 最佳实践 将JSON列类型...