2016-03-30 12 views
0

bahar veri sorguda insanceof nesne alırım ben de Item sahip bir Inventory sınıf var ItemNasıl Bir <code>Item</code> sınıf</p> <pre><code>@Getter @Setter @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Item { @Id private Long id; private String name; } </code></pre> <p>Ve bu iki sonraki sınıf var

@Getter 
@Setter 
@Entity 
public class RawMaterial extends Item { 
    private String supplier; 
} 

@Getter 
@Setter 
@Entity 
public class Product extends Item { 
    private BigDecimal salePrice; 
} 

alt sınıfı olan alan adı olarak

@Getter 
@Setter 
@Entity 
public class Inventory { 
    @Id 
    private Long id; 

    @ManyToOne 
    private Item item; 
} 

Benim sorumitem alanının örneğini nasıl alırım. dtype ile yapılacak bir şey var mı?

public interface InventoryDao extends JpaRepository<Inventory,Long> { 

    @Query("FROM Inventory WHERE item instance of ?1") 
    public List<Inventory> getInventoryByItem(Class klazz); 

} 

benim öz tarafından münhal

List<Inventory> list = getInventoryByItem(Product.class); 
+0

http://stackoverflow.com/questions/2093025/how-to-perform-a-non-polymorphic-hql-query-in-hibernate belki –

+0

Teşekkür .. ben bunu deneyecek :) – Mirza

+0

Yani Neden beton sınıfı başına bir repo kullanmıyorsunuz? –

cevap

1

gibi bir şey yapmak gerekir.

public interface InventoryDao extends JpaRepository<Inventory,Long> { 

    @Query("FROM Inventory WHERE TYPE(item.class) = ?1") 
    public List<Inventory> getInventoryByItem(Class<? extends Item> klazz); 

} 
İlgili konular