java - $expand 在我的 JPA/Olingo 2.0.11 OData 服务中不起作用
问题描述
如果在使用此库版本时扩展系统查询选项适用于你们中的任何人,那将非常有趣。
库和框架组合:Java OData 2 JPA 库 2.0.11 + JPA Hibernate + MySQL
我正在尝试在 OData 查询中使用系统查询选项“expand”(例如 /books?$expand=PublisherDetails)。在 UriParserImpl#handleSystemQueryOptionExpand - L#796 发生 NPE,导致在 L#792 获取的属性的 edmType 为空
如果我想使用递归查询(例如书籍('id')/PublisherDetails)从另一个表中查询数据,我会以不同的方式遇到同样的问题。UriParserImpl#handleNavigationProperties - L#299
库中的 UriParserImpl java 类:https ://github.com/apache/olingo-odata2/blob/master/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/ UriParserImpl.java
持久性实体:
书
@Entity(name = "book")
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(length = 100)
protected String bookID;
.
.
.
@ManyToOne(cascade = { CascadeType.REFRESH })
private Publisher publisher;
public String getBookID() {
return bookID;
}
public void setBookID(final String bookID) {
this.bookID= bookID;
}
public Publisher getPublisher() {
return publisher;
}
public void setPublisher(final Publisher publisher) {
this.publisher = publisher;
}
.
.
.
}
出版商
@Entity(name = "publisher")
public class Publisher implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(length = 100)
private String id;
.
.
.
@OneToMany(fetch = FetchType.LAZY, mappedBy = "publisher")
private List<Book> books;
public String getId() {
return id;
}
public void setId(final String id) {
this.id = id;
}
.
.
.
}
通过 $metadata 获取时,我的导航属性和关联看起来不错。
导航属性:
<NavigationProperty Name="PublisherDetails" Relationship="persistence-unit-name.book_Publisher_Many_ZeroToOne0" FromRole="book" ToRole="Publisher"/>
协会:
<Association Name="book_Publisher_Many_ZeroToOne0">
<End Type="persistence-unit-name.book" Multiplicity="*" Role="book"/>
<End Type="persistence-unit-name.Publisher" Multiplicity="0..1" Role="Publisher"/>
实体容器:
<EntityContainer Name="persistence-unit-nameContainer" m:IsDefaultEntityContainer="true">
<EntitySet Name="books" EntityType="persistence-unit-name.book"/>
<EntitySet Name="publishers" EntityType="persistence-unit-name.publisher"/></EntityContainer>
而且......我的EntitySets中没有外键属性是否正常?
非常感谢有关我可能做错的提示。
解决方案
推荐阅读
- javascript - Flutter - 在插件中加载 Emscripten JS 库的问题
- php - WordPress:创建登录用户 URL 格式,如 woocommerce /dashboard/xyz
- javascript - 如何在引导程序中更改图像卡?
- git - post-commit 钩子告诉父 repo 更新到 bit bucket 中子模块的链接
- java - 使用 JRBeanCollectionDataSource 合并 Jasper Reports 中的表格行单元格?
- php - 将继承变量(混合类型)的数据类型覆盖为特定类型(字符串)
- ios - IOS 更新到 14.7.1 后流式 OWT 应用程序不流式传输
- prometheus - PromQL over HTTP 没有通过 curl 返回任何结果
- c++ - 使用 nlohmann::json 从 JSON 解析浮点数
- python - Django Test.py django.db.utils.IntegrityError:唯一约束失败:books_book.id