/** * Overridden to deal with polymorphism. * <p> * {@inheritDoc} */ @Override public IComponentDescriptorProvider<?> getModelDescriptor() { IComponentDescriptorProvider<?> registeredModelDescriptor = (IComponentDescriptorProvider<?>) super .getModelDescriptor(); if (getModel() instanceof IEntity && !(getModel() instanceof IQueryComponent)) { Class<? extends IEntity> entityContract = ((IEntity) getModel()) .getComponentContract(); if (!entityContract.equals(registeredModelDescriptor.getModelType())) { // we must take care of subclasses (polymorphism) return modelConnectorFactory.getDescriptorRegistry() .getComponentDescriptor(entityContract); } } return registeredModelDescriptor; }