У меня есть библиотека объектов JAXB / Entity, которые я использую для отмены вызова потока XML. Я могу сделать это без проблем, просто работая как приложение Java SE. Я перенес все в приложение Java EE, используя Netbeans 6.9 и Glassfish 3.01. Сейчас я сталкиваюсь с рядом исключений, таких как следующие.
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 19 counts of IllegalAnnotationExceptions
Property _persistence_productBase_vh is present but not specified in @XmlType.propOrder
this problem is related to the following location:
at protected org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface entitiesjaxb.cmic.ajrs.com.ProductSorts._persistence_productBase_vh
at entitiesjaxb.cmic.ajrs.com.ProductSorts
at public entitiesjaxb.cmic.ajrs.com.ProductSorts entitiesjaxb.cmic.ajrs.com.ObjectFactory.createProductSorts()
at entitiesjaxb.cmic.ajrs.com.ObjectFactory
Моя проблема в том, что в моих файлах enties / jaxb отсутствует элемент или переменная xml _persistence_productBase_vh. Я предполагаю, что это добавлено Glassfish и EclipseLink. Кто-нибудь знает, как игнорировать эти свойства? Вот сущность и пример из xml.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ProductSorts", propOrder = {
"pkId",
"productBase",
"field",
"value",
"ts"
})
@Entity
@Table(name = "product_sorts")
@NamedQueries({
//@NamedQuery(name = "ProductSorts.findAll", query = "SELECT p FROM ProductSorts p"),
@NamedQuery(name = "ProductSorts.findByPkId", query = "SELECT p FROM ProductSorts p WHERE p.pkId = :pkId"),
@NamedQuery(name = "ProductSorts.findByField", query = "SELECT p FROM ProductSorts p WHERE p.field = :field"),
@NamedQuery(name = "ProductSorts.findByValue", query = "SELECT p FROM ProductSorts p WHERE p.value = :value"),
@NamedQuery(name = "ProductSorts.findByTs", query = "SELECT p FROM ProductSorts p WHERE p.ts = :ts")})
public class ProductSorts implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "pk_id")
private Integer pkId;
@Column(name = "field")
@XmlElement(name = "Field")
private String field;
@Column(name = "value")
@XmlElement(name = "Value")
private String value;
@Basic(optional = false)
@Column(name = "ts")
@Temporal(TemporalType.TIMESTAMP)
@XmlElement(required = true)
@XmlSchemaType(name = "dateTime")
private Date ts;
@JoinColumn(name = "pk_product", referencedColumnName = "pk_id")
@ManyToOne(fetch = FetchType.LAZY)
private ProductBase productBase;
public ProductSorts() {
}
public ProductSorts(Integer pkId) {
this.pkId = pkId;
}
<ProductSorts>
<pkID>317926</pkID>
<pkProduct>118647</pkProduct>
<Field>3D TECHNOLOGY</Field>
<Value>No</Value>
<ts>1970-01-13T00:43:15.947</ts>
</ProductSorts>