Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用方法名和对象参数构造Spring数据查询_Java_Jpa_Spring Data - Fatal编程技术网

Java 使用方法名和对象参数构造Spring数据查询

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注释,让Spring数据基于我的方法名和下面实体关系的方法参数来构造JPA查询。我想检索与特定项目相关的项目位置列表。我尝试了下面的签名,没有@Query它就无法工作。传入Item.id而不是Item对象本身是否更合适(高效/有效)

Spring数据版本:1.3.4.0版本

Working 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;
    }
@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中)