Tagged: hibernate reverse engineering
- This topic has 6 replies, 2 voices, and was last updated 5 years, 7 months ago by Brian Fernandes.
-
AuthorPosts
-
kidfruitParticipantI use myeclipse hibernate reverse tool to generate entities. The problem is that if I want to custom a entity, there isn’t any template in myeclipse such as origin eclipse with JBOSS TOOLS.
In JBOSS TOOLS, this is possible by edit template files like POJO.vm. But in myeclipse, no vm file in the same path.
So, how to custom my entity by myeclipse?
Best wishes!
Brian FernandesModeratorThank you for asking – you can customize these generated files, please see section 4 (and specifically 4.1) in this document https://www.genuitec.com/docs/persistence/developing-persistence-hibernate
There is an archive of the templates that are internally used, the README file within contains additional instructions.
Hope this helps!
kidfruitParticipantThanks for your help!
The section 4.1 and 4.2 solved my problem.
And then there is another question when I custom my strategy with code
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy){
super(strategy);
}
public String columnToPropertyName(TableIdentifier table, String columnName) { return “ME_” + super.columnToPropertyName(table, columnName);
}
`}Now how to debug with breakpoints. If I right click the table and click “hibernate reverse engeering” menu, it will process with “run mode” but not “debug mode”.
- This reply was modified 5 years, 7 months ago by kidfruit.
kidfruitParticipantAfter some test, more problems occur.
When I extend DelegatingReverseEngineeringStrategy and override method, it works, but I can’t custom the annotation of entity, such as remove the ‘scheme=”xxx”‘ from @Table annotation. I test ‘tableToMetaAttributes’ method, but the result map is null.
Then I change another way by edit templates. I found ‘ConcretePojo.vm’ in pojo folder, It has a code section like this:
`
#if ($clazz.table.schema)
,schema=”$clazz.table.schema”
#end
`
After delete this code section, then do reverse engeering again, but nothing changed. It seems that the custom template can’t work as my wish.
My myeclipse version is CI 2018.9.0, the templates you provided is for version 8.5? Is it caused by version incompatible?
- This reply was modified 5 years, 7 months ago by kidfruit.
Brian FernandesModeratorA few quick responses –
Now how to debug with breakpoints. If I right click the table and click “hibernate reverse engeering” menu, it will process with “run mode” but not “debug mode”.
I’m afraid debugging the reverse engineering process isn’t so straightforward. Will require MyEclipse sources, and I would not recommend trying to do this.
As far as modifying the templates, there is no problem with the template version, that is the latest version of those files. Can you send us a screenshot of the wizard – I hope you have selected the correct folder in the RE process? Do send us the workspace error log as well – you can find this at
[workspace_location]/.metadata/.log
. Note that there are some cases under which theEjb3TypeDeclaration.vm
file is used, it too has the schema declaration, so do try modifying that file as well, for your testing.
kidfruitParticipantThanks again for your quickly reply.
The Ejb3TypeDeclaration.vm is that I need. By edit this file it work as I wish. I used a wrong template file before.
So, what is ConcretePojo.vm? Is there a manual to explain each .vm file and the useage of methods in these files?
Brian FernandesModeratorGlad that worked. I’m afraid there isn’t detailed documentation for these files, not many users were ultimately interested in customizing reverse engineered files. You can ask here, and I will do my best to help.
The reverse engineering wizard gives you an option to, “Create abstract class”, if this is selected, two classes will be generated for each table, one abstract class and one concrete class which extends the abstract class. The ConcretePojo.vm template is used for this concrete class.
Hope this helps.
-
AuthorPosts