2011-10-10 26 views

Trả lời

10

Theo nhận xét @ tomasz-nurkiewicz tôi nên sử dụng chú thích @XmlTransient. Nhưng như đã nêu trong tài liệu hướng dẫn

Theo mặc định, nếu @XmlAccessorType trên một lớp vắng mặt, và không ai trong số các lớp siêu của nó được chú thích với @XmlAccessorType, sau đó mặc định sau trên lớp được giả:

@ XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)

đâu XmlAccessType.PUBLIC_MEMBER có nghĩa là:

mỗi getter công cộng/cặp setter và mỗi pu trường blic sẽ tự động được liên kết với XML, trừ khi được chú thích bởi XmlTransient. Các trường hoặc các cặp getter/setter được riêng tư, được bảo vệ hoặc được mặc định thành truy cập chỉ gói chỉ được ràng buộc với XML khi chúng được chú thích một cách rõ ràng bằng các chú thích JAXB thích hợp.

Vì vậy, đây là lý do tại sao @XmlTransient cho trường riêng tư không hoạt động trong ví dụ từ Tomasz Nurkiewicz. Có hai cách có thể khắc phục điều đó:

1) Thêm chú thích để getter công cộng:

private String password; 

@XmlTransient 
public String getPassword() { 
    return password; 
} 

2) Thêm @XmlAccessorType đến lớp:

@XmlAccessorType(XmlAccessType.FIELD) 
public User { 

    @XmlTransient 
    private String password; 

} 

Tìm thấy tại: http://old.nabble.com/@XmlTransient-ignored-td7406659.html

4

Tôi cho rằng bạn đang sử dụng JAXB cho ánh xạ đối tượng-XML. Trong trường hợp đó chỉ cần chú thích các trường bạn muốn bỏ qua trong thực thể cơ sở dữ liệu của bạn với @XmlTransient.

@XmlTransient 
private String password; 

Tuy nhiên lưu ý rằng một ngày nào đó bạn sẽ nhận ra rằng bạn không cần một lớp học tạm thời chủ yếu để tách dịch vụ web CXF của bạn từ backend. Sau khi tất cả các bạn không muốn nhớ tất cả thời gian mà thêm một cột trong cơ sở dữ liệu ngay lập tức phá vỡ giao diện SOAP ...

+0

tôi Tôi không chắc chắn những gì tôi sử dụng, bởi vì tôi đã chỉ thêm 'cxf-rt-frontend-jaxws' và' cxf-rt-transports-http' vào tệp 'pom.xml' của tôi để sử dụng CXF. Nhưng tôi thấy 'jaxb-impl-2.1.13.jar' và' cxf-rt-databinding-jaxb-2.4.3.jar' trong gói WAR của tôi, có vẻ như bạn đã đúng. Tôi đã cố gắng sử dụng '@ XmlTransient' mà không may mắn: (Tôi cũng đã thêm' @ XmlRootElement' vào cả lớp, nhưng không có gì thay đổi. Bạn có mẹo khác không? –

+0

Xin chào một lần nữa! Tôi googling và làm ít nghiên cứu và tìm ra cách giải quyết vấn đề của mình Xem bản cập nhật của tôi Tôi cũng đưa ra câu trả lời của bạn vì nó giúp tôi tìm ra giải pháp phù hợp. –

Các vấn đề liên quan