Hibernate 列映射 --转换值

– Start
如果数据库的值和 Java 中的值不一样,我们还可以通过 @ColumnTransformer 定义转换规则。

package shangbo.hibernate.demo014;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

import org.hibernate.annotations.ColumnTransformer;

@Entity
public class Customer {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "customerId-generator")
	@SequenceGenerator(name = "customerId-generator", sequenceName = "CUSTOMER_ID_SEQ")
	private Integer customerId;

	private String customerName;

	@ColumnTransformer(read = "case customer_type when 'R' then 'Regular' else 'Other' end", write = "case ? when 'Regular' then 'R' else 'O' end")
	private String customerType;

	public Customer() {
	}

	public Customer(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate 中,Java 的基本数据类型和对应的包装类是可以互换使用的,但是在进行字段映射时,需要注意以下几点: 1. 建议使用包装类,避免空指针异常:在 Java 中,基本数据类型是不能为 null 的,但是包装类可以为 null。在进行数据库操作时,如果使用基本数据类型,当数据库中对应的字段为 null 时,就会抛出空指针异常。因此建议使用包装类,可以避免这种异常的出现。 2. 数据库中的字段类型要和 Java 类型一致:在进行字段映射时,需要确保数据库中的字段类型和 Java 类型一致,否则可能导致数据类型转换异常。 3. 对于布尔类型的字段,建议使用包装类 Boolean:因为在数据库中,布尔类型的字段通常使用 tinyint(1) 类型表示,如果使用基本数据类型 boolean 进行映射,会导致数据类型转换异常。 4. 对于数类型的字段,建议使用包装类:因为在数据库中,数类型的字段通常会有默认,如果使用基本数据类型进行映射,当数据库中对应的字段为 null 时,就会使用默认进行赋,而这个默认可能会影响业务逻辑的正确性。 下面是一个示例代码,演示了如何在 Hibernate 中进行字段映射: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username") private String username; @Column(name = "age") private Integer age; @Column(name = "is_admin") private Boolean isAdmin; // getter 和 setter 方法省略 } ``` 在上面的示例中,我们使用了包装类 Integer 和 Boolean 进行字段映射,避免了空指针异常和数据类型转换异常的问题。同时,我们还指定了数据库中对应的字段名,确保了数据类型一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值