2010-06-23 25 views
5

Tôi có một mảnh đồ trông giống nhưHyperJaxb3 và xsd: anyType

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

Lớp sản xuất bởi hyperjaxb3 chứa các đoạn sau:

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

Tôi hiểu rằng ngủ đông sẽ phải vật lộn để tồn tại một tinh khiết Đối tượng để hyperjaxb giả định rằng đối tượng có thể được unmarshalled đến một chuỗi XML và chuỗi kết quả là vẫn tồn tại. Trong trường hợp của tôi, điều này không đúng nhưng tôi có thể đảm bảo rằng phương thức toString() sẽ trả về một cái gì đó hữu ích. Tôi muốn mã được tạo trông giống như sau:

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

Tôi có thể nhận được hiệu ứng này hoặc tương tự không?

Xin cảm ơn,

Đánh dấu.

Trả lời

0

Vấn đề là chuyển đổi này phải là hai chiều: bạn cũng phải có khả năng "phân tích" đối tượng của bạn trở lại từ chuỗi - nếu không bạn sẽ không lấy lại đối tượng của mình. Vì vậy, toString() là không đủ (nhưng nó là một nơi hoàn hảo để bắt đầu).

Tôi nghĩ rằng nó có thể được giải quyết với bộ điều hợp tùy chỉnh. I E. bạn viết và định cấu hình bộ điều hợp của riêng bạn cho thuộc tính này. Bộ điều hợp sẽ làm sau đó toString()/fromString(...) cho loại của bạn.

Dưới đây là một vấn đề:

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

+0

tôi đăng một số in màn hình như một chỉnh sửa để gửi bài khác của tôi về hyperjaxb3. Dòng lệnh nói rằng việc xây dựng là một thành công mặc dù tệp java dự định không được tạo ra. Có một cảnh báo về một thư viện bị thiếu, nhưng cảnh báo vẫn còn ngay cả sau khi tôi buộc phải tải xuống lại thư viện trong kho lưu trữ m2 và thử lại. Một số dòng cụ thể trong mã của bạn được cung cấp. Bạn có sẵn sàng giúp tôi với điều này không? Đây là liên kết: http://stackoverflow.com/questions/25676731/hyperjaxb3-not-generating-files – CodeMed