2013-02-12 40 views
5

Tôi đang sử dụng Hibernate Envers để kiểm tra các thực thể và thuộc tính của tôi (org.hibernate.envers.global_with_modified_flag=true). Điều này dường như làm việc, nhưng bây giờ tôi muốn có được tất cả các tài sản của một thực thể cụ thể mà thay đổi tại một phiên bản nhất định, so với trước đó. Là một tiền thưởng, nó sẽ là tốt đẹp để có được changeset từ một sửa đổi khác. Cho đến nay, tôi chỉ nhận được các thực thể chỉnh sửa:Bắt các thuộc tính được sửa đổi bằng cách sửa đổi

List<Object> modifiedClassesAtRevision = getAuditReader().getCrossTypeRevisionChangesReader().findEntities(revision, RevisionType.MOD) 
Object modifiedObject = modifiedClassesAtRevision.get(0); 

Bây giờ, kể từ khi tôi không muốn tạo ra các phương pháp so sánh cho tất cả các đối tượng trong Java, có cách nào để có được các tính chất biến đổi của phiên bản này? Một cái gì đó dọc theo dòng

List<String> modifiedProperties = getAuditReader().getModifiedProperties(modifiedObject, revision); 

sẽ rất tuyệt nếu có - nhưng có lẽ tôi quá ngu ngốc để tìm loại tính năng đó.

Trả lời

3

Hiện tại, chỉ có thể truy vấn đối với các thực thể mà thuộc tính đã được sửa đổi, xem http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries.

Lấy mô tả (changeset) trong đó các thuộc tính đã thay đổi chưa khả thi.

+1

Cảm ơn, tôi đã thấy tùy chọn truy vấn đó, chỉ không chắc chắn nếu danh sách các thuộc tính đã thay đổi không được đề cập trong tài liệu hoặc nếu nó thực sự bị thiếu. Bây giờ tôi biết rằng nó là sau ;-) Như một workaround tôi lấy phiên bản cũ và phiên bản mới và sử dụng 'BeanUtils' và' PropertyUtils' để lặp qua tất cả các thuộc tính và so sánh các giá trị của họ. Không tốt đẹp, nhưng nó hoạt động ngay bây giờ. :-) –

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