假设我有一些这样的代码:
Vehicle vehicle = vehicleRepostory.findByIdInitialized(vehicleId);
如果Vehicle
找不到此方法将返回null
。规范说在这种情况下我必须抛出一个MyObjectNotFoundException
所以代码变成这样:
Vehicle vehicle = vehicleRepostory.findByIdInitialized(vehicleId);
MyObjectNotFoundException.throwIfNull(vehicle, Vehicle.class, vehicleId);
如果我想摆脱对throwIfNull
. 无论如何,它并不是真正的干燥和糟糕的设计选择。一定有一些我不知道的设计模式。我在网上搜索,但没有找到任何真正有用的东西。
一个简单的解决方案可能是将代码放入我的存储库中,但我为此使用 SpringData,因此它只是一个接口:
public interface VehicleRepository extends Repository<Vehicle, Long>
// ...
@Query("select v from Vehicle v LEFT JOIN FETCH v.technicalData td LEFT JOIN FETCH v.registrationData rd"
+ " where v.vehicleId = ?")
Vehicle findByIdInitialized(Long vehicleId);