Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa Olingo OData V2读取属性未实现_Jpa_Odata_Olingo - Fatal编程技术网

Jpa Olingo OData V2读取属性未实现

Jpa Olingo OData V2读取属性未实现,jpa,odata,olingo,Jpa,Odata,Olingo,我使用EclipseLink在康涅狄格州的ApacheOlingoV2和JPA实现了ODataV2服务。所有请求都可以正常工作,但当涉及到以下问题时,我希望通过GET请求从实体集访问单个属性,如以下URL: 作为回报,答复是: <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code/> <message xml:lang="de-

我使用EclipseLink在康涅狄格州的ApacheOlingoV2和JPA实现了ODataV2服务。所有请求都可以正常工作,但当涉及到以下问题时,我希望通过GET请求从实体集访问单个属性,如以下URL:

作为回报,答复是:

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code/>
           <message xml:lang="de-DE">Not implemented</message>
</error>
我现在的问题是:
如何实现该功能,以便不仅可以对整个实体集执行GET和POST请求,还可以对实体集的单个属性执行GET和POST请求,就像我尝试使用上述URL一样?

您需要在实体集之间创建关联。 例如,要访问以下URL:('6')/Manufacturer,需要在汽车和制造商关联集之间创建关联。
查看文档:

如果使用Olingo JPA扩展,则当前未实现从一个实体访问单个属性

如果要支持此行为,可以注册自定义处理器,并且只重写“readEntityComplexProperty”和“readEntitySimpleProperty”方法。在那里,您可以使用自定义代码专门获取值。 您不重写的每个方法都将导致执行标准的Olingo功能

以下是有关如何注册自定义JPA处理器的教程:

下面是一个示例,说明如果您自己实现功能,代码会是什么样子:

Hegg, 您可以使用 ?$select=属性

再见 多梅尼科

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;


public class JPAODataServiceFactory extends ODataJPAServiceFactory
{

    private static final String PERSISTENCE_UNIT_NAME = "MyPersistenceUnitName";

    @Override
    public ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException
    {

        ODataJPAContext oDatJPAContext = this.getODataJPAContext();
        try
        {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
            oDatJPAContext.setEntityManagerFactory(emf);
            oDatJPAContext.setPersistenceUnitName(PERSISTENCE_UNIT_NAME);

            return oDatJPAContext;

        } catch (Exception e)
        {

            throw new RuntimeException(e);

        }

    }