Hibernate 自定义代理生成器 - 阻止 equals() 初始化惰性代理
我有实体类,这些实体类实现了自己的 equals() 函数,该函数只是比较类的 Id。遗憾的是,在 Hibernate 代理上调用 equals() 会初始化它,这在我的例子中完全没有用。
我使用 javassist 作为代理提供者。有没有办法修改代理生成代码,以便在 equals 调用期间不加载实体,而是为我做其他事情?我可以在 Hibernate 中插入自定义代理提供程序吗?
请不要开始讨论 equals 在 Hibernate 中应该如何表现,这已经很远了,关于这个话题有不同的意见,我已经知道了,这不是问题的一部分:)。
I have entity classes and these entity classes implement their own equals() function, which just compares the Ids of the classes. Sadly, invoking equals() on a Hibernate proxy initializes it, which is completly useless in my case.
I use javassist as a proxy provider. Is there a way to modify the proxy generation code to not load the entity during an equals call, but instead does something else for me? Can I plug a custom proxy provider in Hibernate?
Please do not start a discussion on how equals should behave in Hibernate, this goes to far, there are different opinions on the topic, which I already know, and is not part of the question :).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您重写 hibernate.jar 中的类并提供您自己的 BasicLazyInitializer 实现,它就可以工作。
It works if you override classes in the hibernate.jar, and providing your own Implementation of BasicLazyInitializer.