生成的完整构造函数包含太多参数
我有一个包含很多很多字段的数据库表,当我使用 Hibernate .hbm 文件为该表生成 POJO 时,这些字段会导致问题。问题是生成的完整构造函数为 Java 生成了太多参数,这会引发编译器错误:
参数太多,参数 xxxx 超出了方法参数的 255 个字的限制
我想通过抑制 Hibernate 生成完整构造函数来解决这个问题。我的问题是
- 如果我没有完整的构造函数,Hibernate 会在运行时中断吗?
- 我如何告诉我的 hbm 不要生成完整的构造函数?
预先感谢您的任何答复。
I have a DB table with many, many fields that is causing an issue when I generate a POJO for that table using a Hibernate .hbm file. The issue is the full constructor being generated produces too many params for Java, which throws compiler error:
Too many parameters, parameter xxxx is exceeding the limit of 255 words eligible for method parameters
I'd like to get around this by suppressing the generation of the full constructor by Hibernate. My question is
- Would Hibernate break at runtime if I don't have the full constructor?
- How can I tell my hbm not to produce the full constructor?
Thanks in advance for any answers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我尚未对此进行测试),您可以通过创建以下文件来自定义 hibernatetool 代码生成,以跳过创建构造函数(如果构造函数的参数超过 255 个):
使用 Hibernate 3.6(也可能适用于早期版本,但 hibernate-cust-src}/pojo/PojoConstructors.ftl
这会覆盖 hibernate-tools.jar 中的 PojoConstructors.ftl。
如果您使用 Ant 进行构建,则需要确保 ${hibernate-cust-src} 位于 hibernate-tools 任务的类路径中。
请注意,恕我直言,这是 hibernate 工具中的一个错误,用于创建具有 > 255 个参数的构造函数...
With Hibernate 3.6 (may work with earlier versions as well, but I've not tested that), you can customise the hibernatetool code generation to skip creating constructors if they'd have more than 255 parameters, by creating the following file:
${hibernate-cust-src}/pojo/PojoConstructors.ftl
this overwrites the PojoConstructors.ftl in the hibernate-tools.jar.
If you're using Ant to build, you'll need to ensure that the
${hibernate-cust-src}
is in the classpath for the hibernate-tools task.Note, IMHO it's a bug in hibernate tools to create a constructor with >255 params...
1.: Hibernate 需求只有一个空的私有构造函数
for 1.: Hibernate needs only a empty private constructor
在 Java 中,您不能为方法或构造函数定义超过 255 个参数。这是Java中的限制。Hibernate也遵循同样的策略。
由于 Hibernate 始终使用默认构造函数,因此最好在 PojoConstructors 模板中删除完整的构造函数生成。
${hibernate-cust-src}/pojo/PojoConstructors.ftl
In Java you can't define more than 255 pararmeters for a method or constructor. This is the restriction in Java.And Hibernate also following same strategy.
As Hibernate always use default constructor,then it better to remove full constructor generation in the PojoConstructors template.
${hibernate-cust-src}/pojo/PojoConstructors.ftl