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