2014-10-19 69 views
0

Item是一個抽象類,它由Material和Product類實現。如何在Java/MySQL中查詢繼承的類類型?

分配實體有一個屬性「item」,它是一個Item類型。如何檢查「商品」是否爲產品類型?現在我正在使用它,但它似乎並不是最佳的。

"SELECT d FROM " + Distribution.class.getName() + " d, " + Product.class.getName() + " p WHERE d.item = p" 
+0

有了'instanceof',但如果你需要做到這一點你已經做別的事情是錯誤的。 – EJP 2014-10-19 08:50:29

+0

您能否詳細說明一下? – octopish 2014-10-19 08:56:00

回答

0

Product.class.getName()將返回全限定類名。

但是,如果你有這樣的:

Item item1= new Product();   Then 
item1.getClass().getSimpleName(); 

將返回產品爲字符串類型。

所以,你可以有:

if(item1.getClass().getSimpleName().equals("Product")) { 
    // Do something like 
    Product product = (Product)item1; 
+0

謝謝,我可以在查詢本身做到這一點嗎? – octopish 2014-10-19 08:55:43

+0

@octopish,更重要的問題是,您不是將所有與產品和材料類相關的數據保存在同一個表中嗎? – 2014-10-19 08:58:25

+0

是的,他們存儲在同一張表 – octopish 2014-10-19 09:06:40