2013-03-17 35 views
1

我需要一个spring存储库方法,可以让我使用id列表来获取一个Scene实体列表。当我尝试引用场景ID时,出现错误,称它无法找到名为IdScene的属性。我正在使用自定义查询来执行此操作。我的查询有问题吗?Spring JPA存储库查询找不到ID属性

我的实体是

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; 
} 
} 

我的资料库:

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); 
} 
+3

尝试'SELECT期从场景S其中s.idScene IN(:ID)'注意小写的 'i' 在 'idScene' – 2013-03-17 10:21:46

+0

@GarethDavis:这应该是一个答案。 – 2013-03-17 10:22:19

+0

谢谢就是这样。为什么我需要使用小写字母? – user1988235 2013-03-17 12:03:45

回答

2

尝试:

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

注小写的 'i' 在 'idScene'”

这是由于Java Bean命名con vention,一个属性定义为:

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

限定wibble和不Wibble

相关问题