hibernate 无法保留空值(nullable=true)

ej83mcc0  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(195)

我需要插入一个空值,而不是空字符串到我的H2数据库。我的实体看起来像这样:

@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Link extends Auditable implements Serializable {

    private static final long serialVersionUID = -5337989744648444109L;

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

    @NotEmpty(message = "title is required")
    @Column(length = 50)
    private String title;

    @Column(unique = true, nullable = true)
    private String url;
}

我的sql语句包含值,它将从Hibernate生成,如下所示

insert 
into
    link
    (link_id, created_by, creation_date, title, url) 
values
    (null, ?, ?, ?, ?,) -
            session_id=2B491C6BFFE4F66BD63C6453E234D991 user_ip=0:0:0:0:0:0:0:1 2022-12-21 14:21:21,232 |

https-jsse-nio-5550-执行代码-9|痕量|o.h.t.d.sql.BasicBinder|将参数1绑定为[VARCHAR]-[www.example.com]-会话标识符= 2B491C6BFFE4F66BD63C6453E234D991用户IP地址= 0:0:0:0:0:0:0:0:1 2022年12月21日14:21:21,232mymail@test.com痕量|o.h.t.d.sql.BasicBinder|将参数[2]绑定为[时间戳]-[2022年12月21日14:21:21.231038300]-会话ID = 2B491C6BFFE4F66BD63C6453E234D991用户IP = 0:0:0:0:0:0:0:1 2022年12月21日14:21:21,233|https-jsse-nio-5550-执行代码-9|痕量|o.h.t.d.sql.BasicBinder|将参数[3]绑定为[VARCHAR]-[测试]-会话ID = 2B491C6BFFE4F66BD63C6453E234D991用户IP = 0:0:0:0:0:0:0:1 2022年12月21日14:21:21,233|https-jsse-nio-5550-执行代码-9|痕量|o.h.t.d.sql.BasicBinder|将参数[4]绑定为[VARCHAR]-[null]-会话ID = 2B491C6BFFE4F66BD63C6453E234D991用户IP = 0:0:0:0:0:0:0:1| o.h.t.d.sql.BasicBinder | binding parameter [4] as [VARCHAR] - [null] - session_id=2B491C6BFFE4F66BD63C6453E234D991 user_ip=0:0:0:0:0:0:0:1
最后一个参数[4]将填充空值,但我的H2-数据库中仍有空字符串。

我已经测试过,我可以手动插入空值到这个列与天真的sql语句。

z0qdvdin

z0qdvdin1#

因为我已经把SpringBoot从2.4.5更新到2.7.7,我不再有这个bug了

相关问题