我的问题是,抑制由Olingo自动提供的端点的最佳方法是什么?
我正在使用一个基于Spring并使用Apache短程序的简单应用程序,这是我的Olingo.On注册:
@Configuration
public class CxfServletUtil{
@Bean
public ServletRegistrationBean getODataServletRegistrationBean() {
ServletRegistrationBean odataServletRegistrationBean = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/user.svc/*");
Map<String, String> initParameters = new HashMap<String, String>();
initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
initParameters.put("org.apache.olingo.odata2.service.factory", "com.olingotest.core.CustomODataJPAServiceFactory");
odataServletRegistrationBean.setInitParameters(initParameters);
return odataServletRegistrationBean;
} ...我的ODataJPAServiceFactory在哪里
@Component
public class CustomODataJPAServiceFactory extends ODataJPAServiceFactory implements ApplicationContextAware {
private static ApplicationContext context;
private static final String PERSISTENCE_UNIT_NAME = "myPersistenceUnit";
private static final String ENTITY_MANAGER_FACTORY_ID = "entityManagerFactory";
@Override
public ODataJPAContext initializeODataJPAContext()
throws ODataJPARuntimeException {
ODataJPAContext oDataJPAContext = this.getODataJPAContext();
try {
EntityManagerFactory emf = (EntityManagerFactory) context.getBean(ENTITY_MANAGER_FACTORY_ID);
oDataJPAContext.setEntityManagerFactory(emf);
oDataJPAContext.setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
return oDataJPAContext;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
...我的实体很简单..。
@Entity
public class User {
@Id
private String id;
@Basic
private String firstName;
@Basic
private String lastName;
....Olingo正在完美地完成它的工作,它帮助我为我的实体生成CRUD操作的所有端点。
我的问题是:我如何“抑制”其中一些?例如,假设我不想启用delete my实体。
我可以尝试使用过滤器-但这似乎有点苛刻。还有其他更好的方法来解决我的问题吗?
谢谢你的帮助。
发布于 2017-02-26 09:23:13
正如您已经说过的,您可以使用一个过滤器,但是您实际上与Olingo使用的URI模式耦合在一起。而且,当您有多个相关的实体集时,事情会变得复杂(因为您可以从一个实体集合导航到另一个实体集,从而使URI更加复杂)。
根据你想要达到的目标,你可以做两件事:
https://stackoverflow.com/questions/41115991
复制相似问题