0

@Query アノテーションを必要とせず、以下のエンティティ関係のメソッド名とメソッド パラメーターに基づいて Spring Data に JPA クエリを構築させることが可能かどうか疑問に思っていました。特定のアイテムに関連する ItemLocations のリストを取得したいと考えています。以下の署名を試してみましたが、@Query なしでは機能しませんでした。Item オブジェクト自体の代わりに Item.id を渡す方が適切 (効率的/効果的) ですか?

春のデータバージョン: 1.3.4.RELEASE

Spring データ リポジトリ API の作業:

@Query("FROM ItemLocation where item = ?")
public List<ItemLocation> getAllItemLocations(Item item);

必要な Spring データ リポジトリ API:

public List<ItemLocation> findAllItemLocations(Item item);

JPA エンティティ:

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

1 に答える 1

0
public List<ItemLocation> findAllByItem(Item item);

(リポジトリ ItemLocationRepository 内)

于 2013-12-16T14:21:26.960 に答える