首先,对于长篇文章的批评,我试图尽可能地减少它。
我正在尝试使用JPA持久化对象。虽然大多数对象字段都保持良好,但完全跳过一个,但没有错误。
简而言之,我试图坚持ListedItemDetail
的实例。遗憾的是,BidCollection
字段被完全忽略,并且数据库中没有它的痕迹。我不知道为什么......
我已经包含了相关来源。源是从第三方架构生成的。我正在使用orm.xml进行JPA映射,并且下面也包含了reavent位。
public class ListedItemDetail extends Item implements Serializable{
protected BidCollection bids;
}
public class Item extends ExtensibleDataObject implements Serializable {
protected int listingId;
}
public class BidCollection extends PagedCollectionOfBidte0R55Be implements
Serializable{
private final static long serialVersionUID = 1L;
}
public class PagedCollectionOfBidte0R55Be implements Serializable {
private final static long serialVersionUID = 1L;
protected Integer totalCount;
protected Integer page;
protected Integer pageSize;
protected InnerCollectionOfBidte0R55Be list;
}
public class InnerCollectionOfBidte0R55Be implements Serializable {
private final static long serialVersionUID = 1L;
protected List<Bid> bid;
}
public class Bid extends ExtensibleDataObject implements Serializable {
private final static long serialVersionUID = 1L;
protected String account;
protected Boolean isByMobile;
protected Boolean isByProxy;
protected Timestamp bidDate;
protected Boolean isBuyNow;
protected Member bidder;
}
orm.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.0">
<entity class="nz.co.trademe.api.v1.ListedItemDetail">
<attributes>
<cascade>
<cascade-persist/>
</cascade>
<embedded name="bids">
</embedded>
</attributes>
</entity>
<entity class="nz.co.trademe.api.v1.Item">
<inheritance strategy="JOINED"/>
<discriminator-column discriminator-type="STRING"/>
<attributes>
<id name="listingId">
</id>
</attributes>
</entity>
<embeddable class="nz.co.trademe.api.v1.PagedCollectionOfBidte0R55Be">
</embeddable>
<embeddable class="nz.co.trademe.api.v1.InnerCollectionOfBidte0R55Be">
<attributes>
<element-collection name="bid">
</element-collection>
</attributes>
</embeddable>
<embeddable class="nz.co.trademe.api.v1.Bid">
</embeddable>
<embeddable class="nz.co.trademe.api.v1.BidCollection">
</embeddable>
</entity-mappings>
答案 0 :(得分:3)
该问题与BidCollection可嵌入和使用继承有关。 JPA不支持使用embeddables继承。
从技术上讲,EclipseLink支持使用embeddables继承,但目前不支持JPA注释。
您可以删除继承,也可以尝试使用DescriptorCustomizer设置继承。
您的模型似乎也很复杂,您可能想重新考虑它。