gpt4 book ai didi

java - 如何捕获 TransientPropertyValueException

转载 作者:行者123 更新时间:2023-12-02 09:34:24 24 4
gpt4 key购买 nike

我正在使用 spring data jpa 将实体保存在数据库中。我收到 TransientPropertyValueException,这是因为我试图保存具有未保存的关联品牌的产品。我想捕获 TransientPropertyValueException 这似乎是不可能的。我知道我可以通过使用 CascadeType 来解决这个问题。但我不想用它。相反,我想捕获异常并用消息重新抛出 CustomException。我怎样才能捕获这个异常。任何评论表示赞赏。提前致谢。

我也尝试过这个

if(exception.getCause() instanceof TransientPropertyValueException)

但这不起作用。

实体类

@Entity
@Table(name = "Product")
public class Product implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUCT_SEQ")
@SequenceGenerator(name="PRODUCT_SEQ", sequenceName = "PRODUCT_SEQ", allocationSize=1)
@Column(name = "PRODUCT_ID", nullable = false)
private long productId;

@OneToOne
@JoinColumn(name = "BRAND_ID", nullable = false)
private Brand brandId;

这就是我打算捕获它的方式。

catch(Exception e) {
if (exception.getCause() instanceof ConstraintViolationException)
throw new CustomException("...");
// catch TransientPropertyValueException
if (exception.getCause() instanceof TransientPropertyValueException)
throw new CustomException("...");
}

最佳答案

你可以尝试:

import org.apache.commons.lang3.exception.ExceptionUtils;
...
int index = ExceptionUtils.indexOfThrowable(exception, TransientPropertyValueException.class);
if (index > 0) {
//here we are
}
...

还有一种方法org.apache.commons.lang3.exception.ExceptionUtils.hasCause

http://commons.apache.org/proper/commons-lang/javadocs/api-3.9/org/apache/commons/lang3/exception/ExceptionUtils.html#hasCause-java.lang.Throwable-java.lang.Class-

关于java - 如何捕获 TransientPropertyValueException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57671259/

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