【发布时间】:2017-10-03 20:59:27
【问题描述】:
目前我的项目正在使用 JPA 进行数据库连接。
我也在使用默认的 OdataJPA 处理器。
如何实现不在我的 odata2 API 响应中包含某些字段,例如(“密码”)。还是我真的必须实现 customOdataJPAProcessor?
【问题讨论】:
目前我的项目正在使用 JPA 进行数据库连接。
我也在使用默认的 OdataJPA 处理器。
如何实现不在我的 odata2 API 响应中包含某些字段,例如(“密码”)。还是我真的必须实现 customOdataJPAProcessor?
【问题讨论】:
排除某些 JPA 实体属性的最简单方法是定义 JPA-EDM 映射模型。这基本上是一个符合this schema 的XML 文件。您可以在此处的文档中阅读有关它的更多信息:redefining OData JPA metadata。
您有两种不同的方式来链接映射模型 XML,您可以指定位于 WEB-INF 文件夹中的文件的文件名(假设您正在构建 WAR),或者,如果这不够灵活,您可以可以创建JPA EDM extension和return the mapping model file as a stream。
这样的文件可能是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<JPAEDMMappingModel xmlns="http://www.apache.org/olingo/odata2/jpa/processor/api/model/mapping">
<PersistenceUnit name="My_Persistence_Unit">
<JPAEntityTypes>
<JPAEntityType name="MyEntity">
<EDMEntityType>MyEntity</EDMEntityType>
<EDMEntitySet>MyEntities</EDMEntitySet>
<JPAAttributes>
<JPAAttribute name="attribute" exclude="true" />
</JPAAttributes>
<JPARelationships />
</JPAEntityType>
</JPAEntityTypes>
<JPAEmbeddableTypes />
</PersistenceUnit>
</JPAEDMMappingModel>
【讨论】: