Hibernate JPA查询为空问题

本文描述了在使用JPA进行数据查询时遇到的一个问题:数据库中有数据但查询结果为空。通过调整@Column注解中的name属性,将驼峰命名转换为下划线分隔的小写形式,解决了这一问题。

问题描述

在使用JPA的过程中,发现了查询数据,数据库中字段是有数据而查出来为空的情况。具体如下图:

这里写图片描述

问题分析解决

数据库字段信息如下:
这里写图片描述

数据库字段不是以下划线为规则。

再去查看实体类的内容

这里写图片描述

发现也是能对应得上的。但是就是查不到

通过尝试,发现@Column(name = “”)有一些坑

@Column(name = “gsType”)
private Integer gsType;

把@Column(name = “gsType”)改成@Column(name = “gstype”),问题解决了。

这里的@Column注解中的 name 属性,并不是跟数据库字段一样

在JPA源码中,应该是在碰到驼峰标识的时候,将转成了下划线”_”+小写的形式,所以 gsType 会转成 gs_type去查询。所以查出来的字段数据为null

这里的JPA映射方式,最好还是学习源码了解,仅个人观点。

### 回答1: 我可以回答这个问题。在使用JPA/Hibernate进行插入操作时,如果要插入字符串,需要将该字段的值设置为null,而不是字符串。这是因为JPA/Hibernate默认情况下将字符串视为未设置值,因此不会将其插入到数据库中。因此,如果要插入字符串,请将该字段设置为null。 ### 回答2: 在JPAHibernate中,如果要插入一个字符串,可以通过使用@NotBlank或者@Column(nullable = false)注解来指定一个字段不能为。这两个注解的作用是确保该字段不能为,并防止插入字符串。 首先,使用@NotBlank注解需要导入javax.validation.constraints.NotBlank包,然后将该注解应用于要插入字符串的字段上。例如: ```java @Column @NotBlank private String name; ``` 这样,在进行插入操作时,如果尝试插入字符串,JPA会抛出ConstraintViolationException异常,提示字段不能为。 另一种方式是使用@Column(nullable = false)注解来指定该字段不能为。例如: ```java @Column(nullable = false) private String name; ``` 这样,在进行插入操作时,如果尝试插入字符串,Hibernate会抛出SQLIntegrityConstraintViolationException异常,提示字段不能为。 可以根据具体的需求选择合适的注解来实现对字符串的插入限制。无论是使用@NotBlank注解还是@Column(nullable = false)注解,都可以有效地防止字符串的插入。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值