Here is a simplified example of my problem. I have this repository and entity class.
public interface ThingRepository extends JpaRepository<ThingEntity, Long> { ThingEntity findByFooInAndBar(String fooIn, String bar); } @Entity public class ThingEntity { @Column(name="FOO_IN", nullable=false, length=1) private String fooIn; public String getFooIn() { return fooIn; } public setFooIn(String fooIn) { this.fooIn = fooIn; } /* not including bar property for brevity's sake */ }
Spring is throwing the following exception.
org.springframework.data.mapping.PropertyReferenceException: No property foo found for type ThingEntity!
It looks like Spring is taking the method findByFooInAndBar
and thinks that foo
is my property name and in
is a keyword for matching values within a collection.
How do I get it to understand that the property name is fooIn
, not foo
?
Creating SQL QueriesAdd a query method to our repository interface. Annotate the query method with the @Query annotation, and specify the invoked query by setting it as the value of the @Query annotation's value attribute. Set the value of the @Query annotation's nativeQuery attribute to true.
To overcome this problem, I've defined the query manually using the @Query
annotation. I'll happily accept anyone else's answer if they find a solution that doesn't require a manual query.
public interface ThingRepository extends JpaRepository<ThingEntity, Long> { @Query("SELECT t FROM Thing t WHERE t.fooIn = ?1 AND t.bar = ?2") ThingEntity findByFooInAndBar(String fooIn, String bar); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With