最近要用Hibernate做一个枚举类型的映射,在MySQL数据库中,hibernate的map文件中如果不配置枚举类型属性的type,那么hibernate会默认的将Enum类型映射为TinyBlob类型,这样就很尴尬了,似乎要多耗费很多的资源,去网上找了一下,有很多种解决办法
- 如果用的是annotation那么用@Enumerated(EnumType.STRING)直接可以映射为String类型
- 如果采用XML配置就没这么简单了,网上最多的方法是利用Hibernate提供的UserType但这样并不是最好的解决办法,还有一种更好的办法
-
package com.igalia.enumerates; public enum Status { BUSY, AVAILABLE; } package com.igalia.entities; class MyClass { private Status status; //getter and setter }
-
<class name="MyClass"> <id name="id"> <generator class="native"/> </id> <property name="status"> <type name="org.hibernate.type.EnumType"> <param name="enumClass"> com.igalia.enumerates.Status </param> </type> </property> </class>
相关推荐
Hibernate通过`@Enumerated`和`@Type`注解为枚举类型提供了灵活的映射机制,允许开发者根据项目需求选择合适的方式。正确地映射枚举类型可以增强代码的可读性和可维护性,同时减少因数据类型转换导致的潜在错误。在...
`@Temporal` 注解接受 `DATE`, `TIME`, `TIMESTAMP` 这三个枚举值,分别映射到 `java.sql.Date`, `java.sql.Time`, `java.sql.Timestamp` 类型。 #### 七、大对象的持久化 对于大对象(如文本、图像等),可以使用...
Hibernate 支持三种类型的继承映射策略: - **Table per Class Strategy**(每个类一张表): `<union-class>` 元素在Hibernate中使用。每个子类拥有自己单独的表。 - **Single Table per Class Hierarchy Strategy**...
一旦某个类被标记为此注解,Hibernate就会将其映射为数据库中的表。 - **`@Id`**:该注解用于指定实体Bean的主键字段。主键字段通常是用来唯一标识数据库表中每一行记录的字段。 在Hibernate中,可以通过注解的方式...
此外,`@Enumerated`注解用于将枚举类型存储为字符串或整数: ```java @Enumerated(EnumType.STRING) Starred getNote() { ... } // enum persisted as String in database ``` 总的来说,Hibernate注解使得Java...
8. **@Enumerated**:用于枚举类型的映射,EnumType.STRING将枚举值存储为字符串。例如: ```java @Enumerated(EnumType.STRING) private Starred getNote() { ... } ``` 9. **@Lob**:用于大对象(BLOB或CLOB...
- 使用`@Enumerated(EnumType.STRING)`将枚举类型持久化为字符串。例如: ```java @Enumerated(EnumType.STRING) Starred getNote() { ... } // 枚举持久化为字符串 ``` 9. **大对象(LOB)类型** - `@Lob`...
9. **@Enumerated**:用于枚举类型,EnumType.STRING将枚举值保存为字符串。例如: ```java @Enumerated(EnumType.STRING) private Starred note; ``` 10. **@OneToMany, @ManyToOne, @OneToOne, @ManyToMany**:...
`@ElementCollection`表示这是一个多值属性,而`@Enumerated(EnumType.STRING)`则指示Hibernate应该将枚举值存储为字符串。 在个人项目中,使用`SET`类型可以帮助你有效地管理有限集合的数据,提高数据的一致性和...
这里,`@Enumerated(EnumType.STRING)`将枚举值作为字符串存储在数据库中。 #### 大对象的处理 对于大文本或二进制数据,Hibernate提供了`@Lob`注解,该注解可以将属性映射为BLOB(Binary Large Object)或CLOB...
- **用途**:用于处理枚举类型数据,将其持久化为字符串或整数。 - **示例**: ```java public enum Status { ACTIVE, INACTIVE } @Entity public class User implements Serializable { @Enumerated(Enum...
- 数据库映射,如Hibernate的`@Entity`, `@Table`, `@Column`等。 ### 8. 总结 自定义注解是Java中强大的工具,它增强了代码的可读性,简化了复杂逻辑,并为自动化处理提供了途径。了解并熟练运用自定义注解能提高...
- **枚举(Enum)**:提供了一种定义固定常量集的方式。 - **注解(Annotation)**:为元数据提供了一种标准化的标记方式,可用于自动生成文档或进行编译时验证。 #### J2EE与Web开发框架 随着业务需求的增长,Java...
- 数据类型:Java有两类数据类型:基本类型(如int、double、boolean)和引用类型(类、接口、数组)。 - 控制结构:包括条件语句(if、switch)、循环(for、while、do-while)以及跳转语句(break、continue)。...
- **switch操控符**:用于多条件选择,支持int、char、enum以及字符串作为参数。 - **静态变量**:在整个程序运行期间都存在,属于类而非对象。 - **最终变量**(final):一旦赋值后不能更改,可以保证数据的不可...