2010-06-23 18 views
5

que tienen un fragmento de esquema que se parece aHyperJaxb3 y xsd: anyType

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

La clase producida por hyperjaxb3 contiene el siguiente fragmento:

@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; 
    } 
} 

entiendo que Hibernate luchar para conservar un pura Objeto para que hyperjaxb asuma que el objeto puede desasignarse a una cadena XML y la cadena resultante se conserva. En mi caso, esto no es cierto, pero puedo garantizar que el método toString() devolverá algo útil. Me gustaría que el código generado se pareciera más a:

@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(); 
} 

¿De todos modos puedo obtener este efecto o algo similar?

Gracias,

Marca.

Respuesta

0

El problema es que esta conversión debe ser bidireccional: también debe poder "analizar" su objeto desde la cadena; de lo contrario, no recuperará su objeto. Entonces toString() no es suficiente (pero es un lugar perfecto para comenzar).

Creo que se puede resolver con adaptadores personalizados. Es decir. usted escribe y configura su propio adaptador para esta propiedad. El adaptador haría entonces toString()/fromString(...) para su tipo.

Aquí hay un problema:

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

+0

he publicado algunas pantallas de impresión como una edición de mi otra publicación sobre hyperjaxb3. La línea de comando dice que la compilación es un éxito a pesar de que el archivo java no fue generado. Existe una advertencia acerca de la falta de una biblioteca, pero la advertencia persiste incluso después de que forcé una nueva descarga de la biblioteca en el repositorio de m2 y volví a intentarlo. Se proporciona un número de línea específico en su código. ¿Estás dispuesto a ayudarme con esto? Aquí está el enlace: http://stackoverflow.com/questions/25676731/hyperjaxb3-not-generating-files – CodeMed