Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring JpaRepository find entities from attribute using unconventional naming

The following used to work in Spring 1.5.10.RELEASE, but does not work in Spring 2.0.7.RELEASE, and I do not know why:

Entity

@Entity
@Table(name = "locations")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Location {
  // ... unimportant stuff
  @Column(name = "c_locations_id")
  private String cLocationId;
  // ... more unimportant stuff
}

Repository (aka "The problem")

@Repository
public interface LocationRepository extends JpaRepository<Location, Long>, JpaSpecificationExecutor<Location> {
  Location findByCLocationId(String cLocationId);
  List<Location> findAllByOrderByCLocationIdAsc();
}

The error I'm getting under Spring 2.0.7.RELEASE for the above code, is

java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [CLocationId] on this ManagedType.

I cannot change the name of the attribute due to other circumstances, so I've tried different variations on the methods in the repository:

  • findBycLocationId - No property orderBycLocationIdAsc found for type Location!
  • findByClocationId - No property clocationId found for type Location! Did you mean 'CLocationId','cLocationId'?
  • findByCLocationId - Unable to locate Attribute with the the given name [CLocationId] on this ManagedType

What does it want?! I just want to upgrade the framework... 😭

like image 570
Øystein Amundsen Avatar asked Mar 05 '23 13:03

Øystein Amundsen


1 Answers

You can use method name like this:

Location findByC_Location_Id(String cLocationId);

this can be helpful with references

like image 137
Hakob Hakobyan Avatar answered Apr 27 '23 03:04

Hakob Hakobyan