Как вызвать функцию после создания 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());```