2010-02-24 86 views

回答

7

似乎有些人沒有正確閱讀我的答案,所以我會換個話:你的hibernate.properties看起來是正確的,屬性是明確的,它應該工作。所以,對於這個問題抱歉,但在類路徑上是CGlib?

更新:經過測試,它適用於我。下面是輸出我在初始化時得到:

 
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:需要注意的是CGLIB support has been deprecated最近(這並不意味着你將無法使用CGLIB但它的集成不再維持)。

+0

我不知道它是如何在你的環境中工作的(也許你正在運行與JBoss打包在一起的Hibernate?),但是Hibernate需要一個系統屬性或類創建時的classpath中的hibernate.properties(stupid!)來捕獲字節碼供應商設置。所以在classpath中加入'cglib'不是問題的根源。 3.3.1和3.3.2都不能「在盒子外面」工作。 – 2010-09-24 17:17:43

+0

@dma_k再次閱讀問題,OP **在類路徑中有一個'hibernate.properties'文件(*「在我的屬性文件中,我設置了」*),所以這部分隱含在我的答案(* 「而且你的財產是明確的」*)。也許**你**誤解了我和我說的話,在這種情況下,我請你重新考慮你的投票。我從來沒有說屬性文件不需要。 – 2010-09-24 17:21:37

+0

@dma_k日誌跟蹤甚至說明我有一個'hibernate.properties'。你完全誤解我說的話。 – 2010-09-24 17:25:31

1

呀,也把

hibernate.properties 

到一些源文件夾,記得有hibermate-CGLIB的重新包裝的依賴關係:

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

從Hibernate 3.3.2開始,不需要重新打包的cglib版本。而且,至少在3.2.x中,需要特別指定'-Dhibernate.bytecode.provider = cglib'系統屬性或創建一個定義了相同屬性的類路徑範圍'hibernate.properties'。 – 2010-09-24 17:13:48

1

是CGLIB庫不是爲大約4年開發記住。但是,您應該盡一切努力使您的代碼與仍處於積極維護狀態的Javassist協同工作。

相關問題