以下内容以前在Spring 1.5.10.RELEASE中可用,但在Spring 2.0.7.RELEASE中不起作用,我也不知道为什么:
实体
@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
public interface LocationRepository extends JpaRepository<Location, Long>, JpaSpecificationExecutor<Location> {
Location findByCLocationId(String cLocationId);
List<Location> findAllByOrderByCLocationIdAsc();
}
上面的代码在Spring 2.0.7.RELEASE下出现的错误是
java.lang.IllegalArgumentException:无法在此ManagedType上找到具有给定名称[CLocationId]的Attribute。
由于其他情况,我无法更改属性名称,因此我对存储库中的方法尝试了不同的变化:
findBycLocationId
-找不到位置类型的属性orderBycLocationIdAsc!findByClocationId
-找不到位置类型的属性clocationId!您是说'CLocationId','cLocationId'吗? findByCLocationId
-无法在此ManagedType上找到具有给定名称[CLocationId]的属性它想要什么?我只想升级框架...
答案 0 :(得分:5)
答案 1 :(得分:1)
您可以在方法official documentation中使用@Query
注释。
@Query("select l from Location l where l.cLocationId = ?1")
Location findByCLocationId(String cLocationId);
@Query("select l from Location l")
List<Location> findAllByOrderByCLocationIdAsc();