2010-02-24 33 views

Trả lời

7

Có vẻ như một số người không đọc câu trả lời của tôi một cách chính xác vì vậy tôi sẽ nói lại: hibernate.properties của bạn có vẻ chính xác, thuộc tính được xác định rõ, nó sẽ hoạt động. Vì vậy, xin lỗi cho câu hỏi nhưng là CGlib trên classpath?

Cập nhật: Chỉ cần kiểm tra và nó phù hợp với tôi. Đây là kết quả tôi nhận được vào thời điểm khởi tạo:

 
15 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 
18 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.bytecode.provider=cglib} 
20 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib 

PS: Lưu ý rằng CGLIB support has been deprecated thời gian gần đây (điều này không có nghĩa là bạn sẽ không thể sử dụng cglib nhưng việc tích hợp nó không được duy trì nữa).

+0

Tôi không biết làm thế nào nó hoạt động trong môi trường của bạn (có thể bạn đang chạy Hibernate đóng gói với JBoss?), Nhưng Hibernate cần một thuộc tính hệ thống hoặc 'hibernate.properties' trong classpath khi tạo lớp (stupid!) Để nắm bắt bytecode thiết lập nhà cung cấp. Vì vậy, có 'cglib' trong classpath không phải là gốc rễ của vấn đề. Cả 3.3.1 và 3.3.2 đều không hoạt động "ngoài hộp". –

+0

@dma_k Đọc lại câu hỏi, OP ** không ** có tệp 'hibernate.properties' (*" Trong tệp thuộc tính của tôi, tôi đặt "*) trên đường dẫn lớp, vì vậy phần này được ngụ ý bởi câu trả lời của tôi (* "và tài sản của bạn được xác định rõ" *). Có lẽ ** bạn ** đã hiểu lầm những gì OP và tôi đã nói, trong trường hợp đó, tôi yêu cầu bạn xem xét lại phiếu bầu của mình. Tôi chưa bao giờ nói tệp thuộc tính là không cần thiết. –

+0

@dma_k Theo dõi nhật ký thậm chí còn minh họa rằng tôi có 'hibernate.properties'. Bạn hoàn toàn hiểu sai những gì tôi nói. –

1

Yeah, cũng đặt

hibernate.properties 

vào một số thư mục nguồn và nhớ để có hibermate-cglib-repack trong phụ thuộc:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-cglib-repack</artifactId> 
    <version>2.1_3</version> 
</dependency> 
+0

Bắt đầu từ Hibernate 3.3.2 phiên bản đóng gói lại của cglib là không cần thiết. Và, ít nhất là đối với 3.2.x, cần phải speiofy hoặc thuộc tính hệ thống '-Dhibernate.bytecode.provider = cglib' hoặc để tạo ra một' hibernate.properties toàn bộ classpath với cùng một thuộc tính được định nghĩa. –

1

Nên nhớ rằng thư viện cglib không phát triển trong khoảng 4 năm . Tuy nhiên, bạn nên làm mọi thứ để làm cho mã của bạn hoạt động với Javassist, mà vẫn được duy trì tích cực.

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