user1988235
user1988235

Reputation: 69

Spring JPA repository query can't find ID property

I need a spring repository method that lets me get a list of Scene entities using a list of id's. When I try to refer to the Scene Id I get an error, saying it can't find the property called IdScene. I am using a custom query to do this. Is there something wrong with my query?

My Entity is

public class Scene implements Serializable
{
private long id_scene;
private Media media;
private int sceneNumber;
private int version;

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id_scene")
public long getIdScene() {
    return id_scene;
}
public void setIdScene(long id_scene) {
    this.id_scene = id_scene;
}

@ManyToOne
@JoinColumn(name = "id_media")
public Media getMedia() {
    return this.media;
}
public void setMedia(Media media) {
    this.media = media;
}

private List<Thumbnail> thumbnails = new ArrayList<Thumbnail>();

@OneToMany(mappedBy = "scene", cascade=CascadeType.ALL,
        orphanRemoval=true)
@LazyCollection(LazyCollectionOption.FALSE)
public List<Thumbnail> getThumbnails() {
    return this.thumbnails;
}
public void setThumbnails(List<Thumbnail> thumbnails) {
    this.thumbnails = thumbnails;
}

public void addThumbnail(Thumbnail thumbnail) {
    thumbnail.setScene(this);
    this.thumbnails.add(thumbnail);
}

private Property property;

@OneToOne(mappedBy="scene", cascade=CascadeType.ALL,
        orphanRemoval=true)
@LazyCollection(LazyCollectionOption.FALSE)
public Property getProperty() {
    return property;
}
public void setProperty(Property property) {
    this.property = property;
}

public void addProperty(Property property) {
    property.setScene(this);
    this.property = property;
}

@Column(name = "sceneNumber")
public int getSceneNumber() {
    return sceneNumber;
}

public void setSceneNumber(int sceneNumber) {
    this.sceneNumber = sceneNumber;
}

@Column(name = "version")
public int getVersion() {
    return version;
}
public void setVersion(int version) {
    this.version = version;
}
}

My repository:

public interface SceneRepository extends JpaRepository<Scene, Long> {


public final static String FIND_BY_ID_LIST = "SELECT s"
        + " FROM Scene s WHERE s.IdScene IN (:id)";


@Query(FIND_BY_ID_LIST)
public List<Scene> findByIdScene(@Param("id") List<Long> id);//, Pageable page);
}

Upvotes: 1

Views: 3662

Answers (1)

Gareth Davis
Gareth Davis

Reputation: 28059

try:

"SELECT s FROM Scene s WHERE s.idScene IN (:id)"

note lower case 'i' in 'idScene'"

This is because of the Java Bean naming convention, a property defined as:

public String getWibble() { return wibble; }
public void setWibble(String value) { wibble = value; }

defines wibble and not Wibble

Upvotes: 2

Related Questions