I’m getting below error and couldn’t figure it what causes the issue.
2024-10-19T11:26:28.546+05:30 WARN 9455 --- [rentsysapi] [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.data.mapping.PropertyReferenceException: No property 'asset' found for type 'AssetVehicle']
Asset Vehicle entity:
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "asset_vehicle", schema = "public")
@EntityListeners(AuditingEntityListener.class)
@Audited
public class AssetVehicle extends BaseExpireEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
@UuidGenerator
@Column(updatable = false, nullable = false, columnDefinition = "UUID")
private UUID assetVehicleId;
@Enumerated(value = EnumType.STRING)
@Column(nullable = false)
private AssetStatus status = AssetStatus.AVAILABLE;
private String vehicleNumber;
private String vin;
private String enginNumber;
private String chassisNumber;
private String color;
/// Year of manufacture
private Integer yom;
/// Year of registration
private Integer yor;
@Column(columnDefinition = "TEXT")
private String remark;
@Column(nullable = false, updatable = false)
private UUID primaryBranchId;
//region relationships
@ManyToOne
@JoinColumn(name = "company_id", nullable = false, updatable = false)
private Company company;
@ManyToOne
@JoinColumn(name = "owner_id")
private UserEntity owner;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "vehicle_id", nullable = false)
private Vehicle vehicle;
@OneToMany(mappedBy = "assetVehicle", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Set<AssetVehicleMedia> media = new HashSet<>();
@OneToMany(mappedBy = "assetVehicle", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Set<AssetVehicleDocument> documents = new HashSet<>();
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "asset_vehicle_branch",
joinColumns = @JoinColumn(name = "asset_vehicle_id"),
inverseJoinColumns = @JoinColumn(name = "branch_id")
)
private Set<Branch> branches = new HashSet<>();
//endregion
}
Asset Vehicle Repository:
@Repository
public interface AssetVehicleRepository extends JpaRepository<AssetVehicle, UUID>, JpaSpecificationExecutor<AssetVehicle> {
Boolean existsByCompanyAndVehicleNumber(Company company, String vehicleNumber);
Optional<AssetVehicle> getByVehicleNumber(String vehicleNumber);
}
Asset Vehicle Service:
@Service
public class AssetVehicleServiceImpl implements AssetVehicleService {
@Autowired
CompanyService companyService;
@Autowired
AssetVehicleRepository assetVehicleRepository;
@Autowired
ModelMapper modelMapper;
@Override
public Boolean existsByCompanyVehicleNumber(UUID companyId, String vehicleNumber) {
Company company = companyService.findById(companyId);
return assetVehicleRepository.existsByCompanyAndVehicleNumber(company, vehicleNumber);
}
@Override
public AssetVehicle getByVehicleNumber(String vehicleNumber) {
return assetVehicleRepository.getByVehicleNumber(vehicleNumber)
.orElseThrow(() -> new NotFoundException("Vehicle not found with vehicle number: " + vehicleNumber));
}
@Override
public AssetVehicleDto getByVehicleNumberDtoDto(String vehicleNumber) {
return modelMapper.map(getByVehicleNumber(vehicleNumber), AssetVehicleDto.class);
}
@Override
public Page<AssetVehicle> getAllAssets(Pageable pageable, AssetStatus status, UUID companyId, UUID ownerId) {
Specification<AssetVehicle> specification = Specification.where(AssetVehicleSpecification.hasStatus(status))
.and(AssetVehicleSpecification.hasCompany(companyId))
.and(AssetVehicleSpecification.hasOwner(ownerId));
return assetVehicleRepository.findAll(specification, pageable);
}
@Override
public Page<AssetVehicleDto> getAllAssetsDto(Pageable pageable, AssetStatus status, UUID companyId, UUID ownerId) {
Page<AssetVehicle> assets = getAllAssets(pageable, status, companyId, ownerId);
return assets.map(asset -> modelMapper.map(asset, AssetVehicleDto.class));
}
}
I’m new to Spring Boot development, coming from a background in mobile development (Android, iOS, Flutter). I’ve been struggling with this issue for about two days and haven’t been able to find a solution yet.
I’ve tried renaming entities and tables, but that hasn’t resolved the problem.
Previously, I had a single table structure for assets. I realized that a single table could impact performance as the database grows, so I decided to separate asset types into individual tables, such as vehicle, power_tool, and generator. For now, I only have the vehicle type.
You need to sign in to view this answers
Leave feedback about this