xmlストリームのマーシャリングを解除するために使用しているJAXB/Entityオブジェクトのライブラリがあります。Java SEアプリケーションとして実行するだけで、問題なく実行できます。Netbeans6.9とGlassfish3.01を使用してすべてをJavaEEアプリに移行しました。現在、次のようないくつかの例外が発生しています。
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>