我们说我有自定义RuntimeException
,其中MyEntity
是JPA @Entity
:
@Getter
public class MyEntityAlreadyExistingException extends RuntimeException {
private final MyEntity myEntity;
public MyEntityAlreadyExistingException(MyEntity myEntity) {
super(MessageFormat.format("MyEntity with name \"{0}\" already exists", myEntity.getName()));
this.myEntity = myEntity;
}
}
Sonar暗示我要myEntity
瞬态或序列化。
我应该如何处理这种情况?
我没有使用任何RMI,远程遥控。使用JPA的Spring Boot Web应用程序相对简单。
如果我myEntity
可序列化,我可以在以后利用哪些优势?
答案 0 :(得分:1)
我该如何应对这种情况?
因此,如果您不使用任何RMI并且您的应用程序在受保护的环境中运行(并且您希望Sonar满意) - 将自定义异常类中的所有字段标记为瞬态,或保持原样。
如果我们讨论分布式环境,那么应该非常谨慎地进行序列化 - 一旦序列化,您的类必须具有可预测的行为。在这种情况下,将实例字段作为对象Serializable
的逻辑状态的一部分,否则 - 将它们标记为瞬态。
P.S。为什么声纳warns你。