2010-02-24 79 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协同工作。

相关问题