Создан импорт функции Edm в Odata 2, но все еще не удается получить доступ к функции - PullRequest
0 голосов
/ 08 января 2020

Как вызвать функцию после создания EdmFunctionImport, как упомянуто в этой документации .

Привет, Джереми, я создал приложение весенней загрузки с Odata. Вот мой пример класса SalesOrderHeadProcessor. Я хочу получить доступ к методу orderValue123, но я не могу получить к нему доступ. Пожалуйста, помогите мне в этом.

@Slf4j
public class SalesOrderHeaderProcessor {

    @EdmFunctionImport(returnType = @ReturnType(type = Type.COMPLEX))
    public OrderValue orderValue123() {
       OrderValue orderValue=new OrderValue();
        return orderValue;
    }
} 

 here is the class extending JPAEdmExtension

class SalesOrderProcessingExtension implements JPAEdmExtension {
    @Override
    public void extendJPAEdmSchema(final JPAEdmSchemaView view) {
        Schema edmSchema = view.getEdmSchema();
        edmSchema.getComplexTypes().add(getComplexType());
    }

    @Override
    public InputStream getJPAEdmMappingModelStream() {
        return null;
    }

    @Override
    public void extendWithOperation(final JPAEdmSchemaView view) {
        view.registerOperations(SalesOrderHeaderProcessor.class, null);
    }

    private ComplexType getComplexType() {
        ComplexType complexType = new ComplexType();

        List<Property> properties = new ArrayList<Property>();
        SimpleProperty property = new SimpleProperty();

        property.setName("Amount");
        property.setType(EdmSimpleTypeKind.Double);
        properties.add(property);

        property = new SimpleProperty();
        property.setName("Currency");
        property.setType(EdmSimpleTypeKind.String);
        properties.add(property);

        complexType.setName("OrderValue");
        complexType.setProperties(properties);

        return complexType;

    }
}

 and here is initialiseODataJPAContext method 

  ODataJPAContext oDataJPAContext = getODataJPAContext();
        ODataContext octx = oDataJPAContext.getODataContext();
        HttpServletRequest request = (HttpServletRequest) octx.getParameter(
                ODataContext.HTTP_SERVLET_REQUEST_OBJECT);
        EntityManager em = (EntityManager) request
                .getAttribute(EntityManagerFilter.EM_REQUEST_ATTRIBUTE);

        oDataJPAContext.setEntityManager(em);
        oDataJPAContext.setPersistenceUnitName("default");
        oDataJPAContext.setContainerManaged(true);
        oDataJPAContext.setJPAEdmExtension(new SalesOrderProcessingExtension());```


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...