Java 使用方法名和对象参数构造Spring数据查询
我想知道是否可以不需要@Query注释,让Spring数据基于我的方法名和下面实体关系的方法参数来构造JPA查询。我想检索与特定项目相关的项目位置列表。我尝试了下面的签名,没有@Query它就无法工作。传入Item.id而不是Item对象本身是否更合适(高效/有效) Spring数据版本:1.3.4.0版本 Working Spring数据存储库API:Java 使用方法名和对象参数构造Spring数据查询,java,jpa,spring-data,Java,Jpa,Spring Data,我想知道是否可以不需要@Query注释,让Spring数据基于我的方法名和下面实体关系的方法参数来构造JPA查询。我想检索与特定项目相关的项目位置列表。我尝试了下面的签名,没有@Query它就无法工作。传入Item.id而不是Item对象本身是否更合适(高效/有效) Spring数据版本:1.3.4.0版本 Working Spring数据存储库API: @Query("FROM ItemLocation where item = ?") public List<ItemLocation&
@Query("FROM ItemLocation where item = ?")
public List<ItemLocation> getAllItemLocations(Item item);
public List<ItemLocation> findAllItemLocations(Item item);
@Entity
public class ItemLocation {
@ManyToOne
@JoinColumn(name="fk_item_id")
public Item getItem() {
return this.item;
}
public void setItem(Item item) {
this.item = item;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Item item;
private long id;
}
@Entity
public class Item {
@OneToMany(mappedBy="item", orphanRemoval=true)
@Cascade({org.hibernate.annotations.CascadeType.PERSIST})
public Set<ItemLocation> getItemLocationList() {
return this.itemLocationList;
}
public void setItemLocationList(Set<ItemLocation> list) {
this.itemLocationList = list;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Set<ItemLocation> itemLocationList
= new HashSet<ItemLocation>();
private long id;
}
@Query(“来自ItemLocation,其中item=?”)
公共列表getAllItemLocations(项目);
所需的Spring数据存储库API:
@Query("FROM ItemLocation where item = ?")
public List<ItemLocation> getAllItemLocations(Item item);
public List<ItemLocation> findAllItemLocations(Item item);
@Entity
public class ItemLocation {
@ManyToOne
@JoinColumn(name="fk_item_id")
public Item getItem() {
return this.item;
}
public void setItem(Item item) {
this.item = item;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Item item;
private long id;
}
@Entity
public class Item {
@OneToMany(mappedBy="item", orphanRemoval=true)
@Cascade({org.hibernate.annotations.CascadeType.PERSIST})
public Set<ItemLocation> getItemLocationList() {
return this.itemLocationList;
}
public void setItemLocationList(Set<ItemLocation> list) {
this.itemLocationList = list;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Set<ItemLocation> itemLocationList
= new HashSet<ItemLocation>();
private long id;
}
公共列表FindAllitemLocation(项目);
JPA实体:
@Query("FROM ItemLocation where item = ?")
public List<ItemLocation> getAllItemLocations(Item item);
public List<ItemLocation> findAllItemLocations(Item item);
@Entity
public class ItemLocation {
@ManyToOne
@JoinColumn(name="fk_item_id")
public Item getItem() {
return this.item;
}
public void setItem(Item item) {
this.item = item;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Item item;
private long id;
}
@Entity
public class Item {
@OneToMany(mappedBy="item", orphanRemoval=true)
@Cascade({org.hibernate.annotations.CascadeType.PERSIST})
public Set<ItemLocation> getItemLocationList() {
return this.itemLocationList;
}
public void setItemLocationList(Set<ItemLocation> list) {
this.itemLocationList = list;
}
@Id
@GeneratedValue
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
private Set<ItemLocation> itemLocationList
= new HashSet<ItemLocation>();
private long id;
}
@实体
公共类项目位置{
@许多酮
@JoinColumn(name=“fk\U项目\U id”)
公共项getItem(){
退回此项目;
}
公共无效集合项(项){
this.item=项目;
}
@身份证
@生成值
公共长getId(){
返回此.id;
}
公共无效集合id(长id){
this.id=id;
}
私人物品;
私人长id;
}
@实体
公共类项目{
@OneToMany(mappedBy=“item”,删除=true)
@级联({org.hibernate.annotations.CascadeType.PERSIST})
公共集getItemLocationList(){
返回此.itemLocationList;
}
公共无效setItemLocationList(集合列表){
this.itemLocationList=列表;
}
@身份证
@生成值
公共长getId(){
返回此.id;
}
公共无效集合id(长id){
this.id=id;
}
私有集itemLocationList
=新HashSet();
私人长id;
}
公共列表findAllByItem(项目);
(在存储库ItemLocationRepository中)