2014-04-28 9 views
5

Tôi có một câu hỏi mà tôi muốn viết trong mô hình sản phẩm của tôiNội tham gia vào vở kịch khung ebean

select * from shop inner join product on product.shops_id=shop.id where product.name=keyword 

Shop.java

public class Shop extends Model { 

    @Id 
    @SequenceGenerator(name="shop_gen", sequenceName="shop_id_seq", allocationSize=1) 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="shop_gen") 
    @Column(name="id") 
    public Long id; 

    @Required 
    public String name; 

    @Required 
    public String addressLine1; 

    public String addressLine2; 

    public String addressLine3; 

    @Required 
    public String city; 

    @Required 
    public String town; 

    @Required 
    public String phoneNumber; 

    @OneToMany(mappedBy = "shops",cascade = CascadeType.REMOVE) 
    public List<Product> products=new ArrayList<>(); 


    @Required 
    @OneToOne 
    public String category; 

    @Lob 
    @Column(name = "shop_pic") 
    public byte[] shop_pic; 


    @ManyToOne 
    @Required 
    public User owner; 

} 

Product.java

public class Product extends Model { 
    @Id 
    @SequenceGenerator(name="product_gen", sequenceName="product_id_seq", allocationSize=1) 
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="product_gen") 
    @Column(name="id") 
    public Long id; 
    @Required 
    public String name; 
    @Required 
    public Float price; 
    @OneToOne 
    @Required 
    public String category; 
    @ManyToOne 
    public Shop shops; 
} 

Mục đích chính của tôi là tìm danh sách cửa hàng h có một sản phẩm cụ thể.

nơi thay đổi từ khóa mọi lúc. tôi đã đề cập đến câu hỏi tương tự nhưng dint hiểu bất kỳ câu hỏi nào trong số đó. Bất kỳ trợ giúp sẽ được đánh giá

Trả lời

1

Với mối quan hệ thích hợp trong mô hình của bạn nó sẽ là:

Shop.find.where().like("product.name", keyword).findList(); 

Dù sao chúng ta không biết gì về mô hình của bạn.

+0

cập nhật câu hỏi của tôi ở trên – akku

0

Đây là giải pháp cho vấn đề của bạn:

Lúc đầu thêm công cụ tìm đến lớp sản phẩm

public static Finder<Long,Product> find = new Finder<Long,Product>(
    Long.class, Product.class 
); 

Thay đổi thuộc tính shops-shop trong lớp sản phẩm. Nó không thích hợp để cung cấp tên số nhiều khi có một đối tượng duy nhất.

Sau đó, để lấy danh sách các cửa hàng có chứa một sản phẩm của một tên được đặt thêm mã tương tự như sau:

List<Product> productList = Product.find.where().like("name", keyword).findList(); 
List<Shop> shopList = new ArrayList<Shop>(); 
for(Product product:productList) 
    shopList.add(product.shop); 
Các vấn đề liên quan