2010-06-23 22 views
5

HyperJaxb3 ve xsd: anyType

<xs:element name="dataValue"> 
     <xs:complexType> 
      <xs:sequence>   
       <xs:element name="value" type="xs:anyType"\> 
      </xs:sequence> 
     </xs:complexType> 
</xs:element> 

gibi görünen bir şema parçacığım var Hyperjaxb3 tarafından üretilen sınıf aşağıdaki parçayı içerir:

@XmlElement(required = true) 
protected Object value; 

@Transient 
public Object getValue() { 
    return value; 
} 

public void setValue(Object value) { 
    this.value = value; 
} 

@Basic 
@Column(name = "VALUEOBJECT") 
public String getValueObject() { 
    if (JAXBContextUtils. 
     isMarshallable("org.lcogt.schema", this.getValue())) { 
     return JAXBContextUtils.unmarshall("org.lcogt.schema", this.getValue()); 
    } else { 
     return null; 
    } 
} 

Hazırda bekletmenin, saf bir Nesneyi devam ettirmek için mücadele edeceğini anlayın ki hiperjaxb, nesne bir XML dizesine eklenemez ve sonuçta oluşan String kalıcıdır. Benim durumumda bu doğru değil ama toString() yönteminin yararlı bir şey döndüreceğini garanti edebilirim. Oluşturulan kodun daha çok benzemesini isterim:

@XmlElement(required = true) 
protected Object value; 

@Transient 
public Object getValue() { 
    return value; 
} 

public void setValue(Object value) { 
    this.value = value; 
} 

@Basic 
@Column(name = "VALUEOBJECT") 
public String getValueObject() { 
     return value.toString(); 
} 

Yine de bu etkiyi veya benzer bir şeyi alabilir miyim?

Teşekkürler,

İşaret.

cevap

0

Sorun, bu dönüşümün iki yönlü olması gerektiğidir: nesneyi dizeden geri "ayrıştırabilmeniz" gerekir. Aksi takdirde nesneyi geri almazsınız. Yani toString() yeterli değildir (ancak başlamak için mükemmel bir yer).

Özel bağdaştırıcılarla çözülebileceğini düşünüyorum. Yani Bu özellik için kendi bağdaştırıcınızı yazıp yapılandırın. Bağdaştırıcı, türü için toString()/fromString(...) yapardı. Ben hyperjaxb3 hakkında benim diğer nakil için bir düzenleme gibi bazı baskı ekranlarında yayınlanan

http://jira.highsource.org/browse/HJIII-54

+0

:

İşte bir mesele. Komut satırı, tasarlanan java dosyasının oluşturulmamasına rağmen yapının başarılı olduğunu söylüyor. Eksik bir kütüphane hakkında bir uyarı var, ancak kütüphanenin m2 deposunda yeniden indirilmesini zorladıktan ve tekrar denedikten sonra uyarı devam ediyor. Kodunuzdaki belirli bir satır numarası verilir. Bana bu konuda yardımcı olmaya hazır mısınız? İşte bağlantı: http://stackoverflow.com/questions/25676731/hyperjaxb3-not-generating-files – CodeMed