如何强制Hibernate3.3或3.5使用CGLib而不是Javassist?
是否仍然可以强制Hibernate3.3或3.5使用CGLib而不是Javassist?在我的属性文件中,我设置如何强制Hibernate3.3或3.5使用CGLib而不是Javassist?,java,hibernate,orm,cglib,Java,Hibernate,Orm,Cglib,是否仍然可以强制Hibernate3.3或3.5使用CGLib而不是Javassist?在我的属性文件中,我设置 hibernate.bytecode.provider = cglib 但这似乎不行。有什么想法吗?似乎有些人没有正确阅读我的答案,所以我将重新措辞:您的休眠。属性看起来正确,属性定义良好,应该可以工作。很抱歉问这个问题,CGlib在类路径上吗 更新:刚刚测试过,适合我。以下是我在初始化时得到的输出: 15 [main] INFO org.hibernate.cfg.Environ
hibernate.bytecode.provider = cglib
但这似乎不行。有什么想法吗?似乎有些人没有正确阅读我的答案,所以我将重新措辞:您的
休眠。属性看起来正确,属性定义良好,应该可以工作。很抱歉问这个问题,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
15[main]INFO org.hibernate.cfg.Environment-hibernate 3.3.0.SP1
18[main]INFO org.hibernate.cfg.Environment-从资源hibernate.properties加载属性:{hibernate.bytecode.use_reflection_optimizer=false,hibernate.bytecode.provider=cglib}
20[main]INFO org.hibernate.cfg.Environment-字节码提供程序名称:cglib
PS:请注意,最近(这并不意味着您将无法使用CGLIB,但它不再维护集成) 是的,也放
hibernate.properties
进入某个源文件夹,并记住在依赖项中重新打包hibermate cglib:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>
org.hibernate
休眠cglib重新打包
2.1_3
请记住,CGLIB库大约有4年没有开发过。但是,您应该尽一切努力使代码与Javassist一起工作,Javassist仍在积极维护中。这就引出了一个问题。。。。为什么?这是hibernate内部的东西。从hibernate 3.3.2开始,不需要重新打包的cglib版本。并且,至少对于3.2.x,需要指定-Dhibernate.bytecode.provider=cglib
系统属性,或者创建一个类路径范围的hibernate.properties
,并定义相同的属性。我不知道它在您的环境中是如何工作的(可能您正在运行与JBoss打包的hibernate?),但是Hibernate需要一个系统属性或类创建时类路径中的Hibernate.properties
(愚蠢!)来捕获字节码提供程序设置。因此,在类路径中使用cglib
并不是问题的根源。3.3.1和3.3.2都不能“开箱即用”。@dma_k再次阅读问题,OP的类路径上确实有一个hibernate.properties
文件(“在我的属性文件中,我设置了”),因此我的回答暗示了这一部分(“并且您的属性定义良好”)。也许你误解了OP和我说的话,在这种情况下,我要求你重新考虑你的投票。我从来没有说过不需要属性文件。@dma\k日志跟踪甚至说明我有一个hibernate.properties
。你完全误解了我说的话。哦,是的,我错过了。对不起,毛毛+1.