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

,하지만 :

그래서 당신은 할 수 있습니다. – EJP

+0

정교하게 주시겠습니까? – octopish

답변

0

Product.class.getName()은 정규화 된 클래스 이름을 반환합니다. 이 같은이있는 경우

그러나 :

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

는 문자열 유형으로 제품를 반환합니다. 당신은 당신이 이미 다른 뭔가 잘못하고있는이 작업을 수행해야하는 경우 instanceof``와

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

감사합니다. 쿼리 자체에서이 작업을 수행 할 수 있습니까? – octopish

+0

@octopish, 더 중요한 질문은 같은 테이블에 Product 및 Materials 클래스와 관련된 모든 데이터를 저장하지 않는다는 것입니다. –

+0

예 그들은 동일한 테이블에 저장됩니다. – octopish

관련 문제