- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将 xml 流解码为实体时遇到问题。我的外键从未设置为具有正确主键的对象,它们只是设置为空对象。
具有外键的类称为 ProductBase。它引用了 BrandData(field pkId) 和 Categories(field pkId)。当我解码并坚持时,我可以很好地处理 BrandData 和 Categories。我遇到了 ProductBase 的问题。
这是 ProductBase:
@XmlAccessorType(XmlAccessType.PROPERTY)
@Entity
@Table(name = "product_base")
@NamedQueries({
@NamedQuery(name = "ProductBase.findAll", query = "SELECT p FROM ProductBase p"),
@NamedQuery(name = "ProductBase.findByPkId", query = "SELECT p FROM ProductBase p WHERE p.pkId = :pkId"),
@NamedQuery(name = "ProductBase.findByColorsAvail", query = "SELECT p FROM ProductBase p WHERE p.colorsAvail = :colorsAvail"),
@NamedQuery(name = "ProductBase.findBySeriesName", query = "SELECT p FROM ProductBase p WHERE p.seriesName = :seriesName"),
@NamedQuery(name = "ProductBase.findByStatusCodes", query = "SELECT p FROM ProductBase p WHERE p.statusCodes = :statusCodes"),
@NamedQuery(name = "ProductBase.findByTs", query = "SELECT p FROM ProductBase p WHERE p.ts = :ts")})
public class ProductBase implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "pk_id")
private Integer pkId;
@Column(name = "colors_avail")
private String colorsAvail;
@Column(name = "series_name")
private String seriesName;
@Column(name = "status_codes")
private String statusCodes;
@Basic(optional = false)
@Column(name = "ts")
@Temporal(TemporalType.TIMESTAMP)
private Date ts;
@OneToMany(mappedBy = "productBase", fetch = FetchType.LAZY)
private Collection<ProductSorts> productSortsCollection;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "productBase", fetch = FetchType.LAZY)
private MapTarget mapTarget;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "productBase", fetch = FetchType.LAZY)
private KeyFeatures keyFeatures;
@JoinColumn(name = "pk_category", referencedColumnName = "pk_id")
@ManyToOne( optional = false, fetch = FetchType.LAZY)
private Categories categories;
@JoinColumn(name = "pk_brand", referencedColumnName = "pk_id")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private BrandData brandData;
@OneToMany(mappedBy = "productBase", fetch = FetchType.LAZY)
private Collection<PromotionsByModel> promotionsByModelCollection;
@OneToMany(mappedBy = "productBase", fetch = FetchType.LAZY)
private Collection<ProductEnhancedFeatures> productEnhancementFeaturesCollection;
@OneToMany(mappedBy = "productBase", fetch = FetchType.LAZY)
private Collection<SkuBasic> skuBasicCollection;
@OneToMany(mappedBy = "productBase", fetch = FetchType.LAZY)
private Collection<ProductMeasurements> productMeasurementsCollection;
public ProductBase() {
}
public ProductBase(Integer pkId) {
this.pkId = pkId;
}
public ProductBase(Integer pkId, Date ts) {
this.pkId = pkId;
this.ts = ts;
}
@XmlElement(name = "pkID")
public Integer getPkId() {
return pkId;
}
public void setPkId(Integer pkId) {
this.pkId = pkId;
}
@XmlElement(name = "ColorsAvail")
public String getColorsAvail() {
return colorsAvail;
}
public void setColorsAvail(String colorsAvail) {
this.colorsAvail = colorsAvail;
}
@XmlElement(name = "SeriesName")
public String getSeriesName() {
return seriesName;
}
public void setSeriesName(String seriesName) {
this.seriesName = seriesName;
}
@XmlElement(name = "StatusCodes")
public String getStatusCodes() {
return statusCodes;
}
public void setStatusCodes(String statusCodes) {
this.statusCodes = statusCodes;
}
@XmlElement(name = "ts", required = true)
@XmlSchemaType(name = "dateTime")
public Date getTs() {
return ts;
}
public void setTs(Date ts) {
this.ts = ts;
}
@XmlTransient
public Collection<ProductSorts> getProductSortsCollection() {
return productSortsCollection;
}
public void setProductSortsCollection(Collection<ProductSorts> productSortsCollection) {
this.productSortsCollection = productSortsCollection;
}
@XmlTransient
public MapTarget getMapTarget() {
return mapTarget;
}
public void setMapTarget(MapTarget mapTarget) {
this.mapTarget = mapTarget;
}
@XmlTransient
public KeyFeatures getKeyFeatures() {
return keyFeatures;
}
public void setKeyFeatures(KeyFeatures keyFeatures) {
this.keyFeatures = keyFeatures;
}
@XmlElement(name = "pkCategory")
public Categories getCategories() {
return categories;
}
public void setCategories(Categories categories) {
this.categories = categories;
}
@XmlElement(name = "pkBrand")
public BrandData getBrandData() {
return brandData;
}
public void setBrandData(BrandData brandData) {
this.brandData = brandData;
}
@XmlTransient
public Collection<PromotionsByModel> getPromotionsByModelCollection() {
return promotionsByModelCollection;
}
public void setPromotionsByModelCollection(Collection<PromotionsByModel> promotionsByModelCollection) {
this.promotionsByModelCollection = promotionsByModelCollection;
}
@XmlTransient
public Collection<ProductEnhancedFeatures> getProductEnhancementFeaturesCollection() {
return productEnhancementFeaturesCollection;
}
public void setProductEnhancementFeaturesCollection(Collection<ProductEnhancedFeatures> productEnhancementFeaturesCollection) {
this.productEnhancementFeaturesCollection = productEnhancementFeaturesCollection;
}
@XmlTransient
public Collection<SkuBasic> getSkuBasicCollection() {
return skuBasicCollection;
}
public void setSkuBasicCollection(Collection<SkuBasic> skuBasicCollection) {
this.skuBasicCollection = skuBasicCollection;
}
@XmlTransient
public Collection<ProductMeasurements> getProductMeasurementsCollection() {
return productMeasurementsCollection;
}
public void setProductMeasurementsCollection(Collection<ProductMeasurements> productMeasurementsCollection) {
this.productMeasurementsCollection = productMeasurementsCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (pkId != null ? pkId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ProductBase)) {
return false;
}
ProductBase other = (ProductBase) object;
if ((this.pkId == null && other.pkId != null) || (this.pkId != null && !this.pkId.equals(other.pkId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entities.cmic.ajrs.com.ProductBase[pkId=" + pkId + "]";
}
解码以下内容:
<ProductBase>
<pkID>88294</pkID>
<pkBrand>18</pkBrand>
<pkCategory>35</pkCategory>
<ColorsAvail>W</ColorsAvail>
<StatusCodes/>
<ts>1970-01-01T05:22:35.06</ts>
</ProductBase>
我想以这样的 ProductBase 对象结束:
ProductBase p1:
p1.pkId=88294
p1.brandData = (brandData object with pkId of 18)
p1.categories = (Categories object with pkId of 35)
p1.ts = (Date object with value 1970-01-01T05:22:35.06)
但是我得到了
ProductBase p1:p1.pkId=88294p1.brandData = (brandData object every field null)p1.categories = (Categories object every field null)p1.ts =(值为 1970-01-01T05:22:35.06 的日期对象)
因此,当我去持久化 ProductBase 时,它有空值问题。
我希望这是由于 BradnData 和 Categories 实体中的引用不当造成的。我尝试使用 @XmlInverseReference 注释但没有成功。有人知道问题出在哪里吗?
BrandData 实体:
@XmlAccessorType(XmlAccessType.PROPERTY)
@Entity
@Table(name = "brand_data")
@NamedQueries({
@NamedQuery(name = "BrandData.findAll", query = "SELECT b FROM BrandData b"),
@NamedQuery(name = "BrandData.findByPkId", query = "SELECT b FROM BrandData b WHERE b.pkId = :pkId"),
@NamedQuery(name = "BrandData.findByCommonBrandId", query = "SELECT b FROM BrandData b WHERE b.commonBrandId = :commonBrandId"),
@NamedQuery(name = "BrandData.findByCommonBrandName", query = "SELECT b FROM BrandData b WHERE b.commonBrandName = :commonBrandName"),
@NamedQuery(name = "BrandData.findByTs", query = "SELECT b FROM BrandData b WHERE b.ts = :ts")})
public class BrandData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "pk_id")
private Integer pkId;
@Column(name = "common_brand_id")
private String commonBrandId;
@Column(name = "common_brand_name")
private String commonBrandName;
@Basic(optional = false)
@Column(name = "ts")
@Temporal(TemporalType.TIMESTAMP)
private Date ts;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "brandData", fetch = FetchType.LAZY)
private Collection<ProductBase> productBaseCollection;
public BrandData() {
}
public BrandData(Integer pkId) {
this.pkId = pkId;
}
public BrandData(Integer pkId, Date ts) {
this.pkId = pkId;
this.ts = ts;
}
@XmlElement(name = "pkID")
public Integer getPkId() {
return pkId;
}
public void setPkId(Integer pkId) {
this.pkId = pkId;
}
@XmlElement(name = "CommonBrandID")
public String getCommonBrandId() {
return commonBrandId;
}
public void setCommonBrandId(String commonBrandId) {
this.commonBrandId = commonBrandId;
}
@XmlElement(name = "CommonBrandName")
public String getCommonBrandName() {
return commonBrandName;
}
public void setCommonBrandName(String commonBrandName) {
this.commonBrandName = commonBrandName;
}
@XmlElement(required = true)
@XmlSchemaType(name = "dateTime")
public Date getTs() {
return ts;
}
public void setTs(Date ts) {
this.ts = ts;
}
@XmlInverseReference(mappedBy ="brandData")
public Collection<ProductBase> getProductBaseCollection() {
return productBaseCollection;
}
public void setProductBaseCollection(Collection<ProductBase> productBaseCollection) {
this.productBaseCollection = productBaseCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (pkId != null ? pkId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof BrandData)) {
return false;
}
BrandData other = (BrandData) object;
if ((this.pkId == null && other.pkId != null) || (this.pkId != null && !this.pkId.equals(other.pkId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entities.cmic.ajrs.com.BrandData[pkId=" + pkId + "]";
}
类别实体:
@XmlAccessorType(XmlAccessType.PROPERTY)
@Entity
@Table(name = "categories")
@NamedQueries({
@NamedQuery(name = "Categories.findAll", query = "SELECT c FROM Categories c"),
@NamedQuery(name = "Categories.findByPkId", query = "SELECT c FROM Categories c WHERE c.pkId = :pkId"),
@NamedQuery(name = "Categories.findByPkSuperCategory", query = "SELECT c FROM Categories c WHERE c.pkSuperCategory = :pkSuperCategory"),
@NamedQuery(name = "Categories.findByCategoryId", query = "SELECT c FROM Categories c WHERE c.categoryId = :categoryId"),
@NamedQuery(name = "Categories.findByCmicDescription", query = "SELECT c FROM Categories c WHERE c.cmicDescription = :cmicDescription"),
@NamedQuery(name = "Categories.findByConsumerDescription", query = "SELECT c FROM Categories c WHERE c.consumerDescription = :consumerDescription"),
@NamedQuery(name = "Categories.findByTs", query = "SELECT c FROM Categories c WHERE c.ts = :ts")})
public class Categories implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "pk_id")
private Integer pkId;
@Column(name = "pk_super_category")
private Integer pkSuperCategory;
@Column(name = "category_id")
private String categoryId;
@Column(name = "cmic_description")
private String cmicDescription;
@Column(name = "consumer_description")
private String consumerDescription;
@Basic(optional = false)
@Column(name = "ts")
@Temporal(TemporalType.TIMESTAMP)
private Date ts;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "categories", fetch = FetchType.LAZY)
private Collection<ProductBase> productBaseCollection;
@JoinColumn(name = "pk_class", referencedColumnName = "pk_id")
@ManyToOne(fetch = FetchType.LAZY)
private Classes classes;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "categories", fetch = FetchType.LAZY)
private SortFields sortFields;
public Categories() {
}
public Categories(Integer pkId) {
this.pkId = pkId;
}
public Categories(Integer pkId, Date ts) {
this.pkId = pkId;
this.ts = ts;
}
@XmlElement(name="pkID")
public Integer getPkId() {
return pkId;
}
public void setPkId(Integer pkId) {
this.pkId = pkId;
}
public Integer getPkSuperCategory() {
return pkSuperCategory;
}
public void setPkSuperCategory(Integer pkSuperCategory) {
this.pkSuperCategory = pkSuperCategory;
}
@XmlElement(name = "Category_ID")
public String getCategoryId() {
return categoryId;
}
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
@XmlElement(name = "CMIC_Description")
public String getCmicDescription() {
return cmicDescription;
}
public void setCmicDescription(String cmicDescription) {
this.cmicDescription = cmicDescription;
}
@XmlElement(name = "ConsumerDescription")
public String getConsumerDescription() {
return consumerDescription;
}
public void setConsumerDescription(String consumerDescription) {
this.consumerDescription = consumerDescription;
}
@XmlElement(required = true)
@XmlSchemaType(name = "dateTime")
public Date getTs() {
return ts;
}
public void setTs(Date ts) {
this.ts = ts;
}
@XmlInverseReference(mappedBy ="categories")
public Collection<ProductBase> getProductBaseCollection() {
return productBaseCollection;
}
public void setProductBaseCollection(Collection<ProductBase> productBaseCollection) {
this.productBaseCollection = productBaseCollection;
}
public Classes getClasses() {
return classes;
}
public void setClasses(Classes classes) {
this.classes = classes;
}
@XmlTransient
public SortFields getSortFields() {
return sortFields;
}
public void setSortFields(SortFields sortFields) {
this.sortFields = sortFields;
}
@Override
public int hashCode() {
int hash = 0;
hash += (pkId != null ? pkId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Categories)) {
return false;
}
Categories other = (Categories) object;
if ((this.pkId == null && other.pkId != null) || (this.pkId != null && !this.pkId.equals(other.pkId))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entities.cmic.ajrs.com.Categories[pkId=" + pkId + "]";
}
最佳答案
对于这个用例,您将需要一个 XmlAdapter。
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class BrandDataAdapter extends XmlAdapter<Integer, BrandData> {
@Override
public Integer marshal(BrandData arg0) throws Exception {
return arg0.getPkId();
}
@Override
public BrandData unmarshal(Integer arg0) throws Exception {
return new BrandData(arg0);
}
}
在 ProductBase 中:
@JoinColumn(name = "pk_brand", referencedColumnName = "pk_id")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@XmlJavaTypeAdapter(BrandDataApter.class)
private BrandData brandData;
了解更多信息
关于java - JAXB 解码到实体错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744786/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!