How do you create a Spring JPA repository findBy q

2019-03-24 08:16发布

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?

2条回答
乱世女痞
2楼-- · 2019-03-24 08:55

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);
}
查看更多
beautiful°
3楼-- · 2019-03-24 08:55

Spring is parsing 'In' in your method to create the query check the link for create your query you should change the name of the variable fooIn to fooin or something like that....

查看更多
登录 后发表回答