gpt4 book ai didi

java - Spring hibernate - 处理表中每行的异常

转载 作者:行者123 更新时间:2023-11-30 10:18:35 27 4
gpt4 key购买 nike

对于我们拥有实体的给定表,我们对数据库中的值的控制有限。当单行插入无效数据时,查询期间最终会抛出异常。此异常会阻止所有行被反序列化。有没有办法以不影响所有行的方式处理此类异常?

最佳答案

恐怕这是不可能的,因为如果可能的话会有一些附带影响。

例如,如果您尝试使用您的想法进行分页,则计数结果将与返回的实体结果数不同:

// all rows will be count, with problem or not
select count (*) from Person

// will ignore the problematic rows and bring less results than the count
select p From Person p

最好的替代方案似乎更加灵活,并为您的代码带来复杂性,在您的实体映射中更加灵活。

例如,如果由于数据库中的枚举器值无效而导致枚举器出现问题,最好将该列映射为字符串而不是枚举器,并在代码中处理该问题。

所以,如果你有这样的事情:

@Column(name = "status", nullable = false, length = 30)
@Enumerated(EnumType.STRING)
private Status status;

更改为:

@Column(name = "status", nullable = false, length = 30)
private String status;

并忽略代码中的结果。有了这种灵 active ,您还可以忽略查询中有问题的结果。喜欢:

SELECT p FROM Person p WHERE status NOT IN (:validStatusAsString)

关于java - Spring hibernate - 处理表中每行的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com