2014-10-19 73 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