Why my JDL fixture didnt work – case stude
It’s time to generate MVP application in one line! To generate it from input.jh file we can use command:
yo jhipster:import-jdl .jhipster\input.jh
And after project was generated I tried to run it using gradlew bootRun command. The first problem was an event:
:compileJava C:\hip\eventsearch\src\main\java\com\pdb\eventsearch\domain\Event.java:73: error: variable event is already defined in class Event private Series event; C:\hip\eventsearch\src\main\java\com\pdb\eventsearch\domain\Event.java:251: error: method getEvent() is already defined in class Event public Series getEvent() { ...
We had created event in three places: for relations with City, Series and Topics entities. This caused our problem, that variable event was already defined 🙂 We need modify a little bit out JDL to make it work correctly. Let’s try with refactoring of relationships:
relationship OneToMany { City{city} to Event{eventInCity}, Series{series} to Event{eventInSeries}, Event{event} to Topic{topicInEvent} }
We need to import jdl file, remove and create database, next rebuild the project.
Jee, it’s almost working! Data are being added in correct way, but still there is some problem with selectbox from relationship. Automatically JHipster displays only record ID. You can modify it in generated json file, searching for parameter:
otherEntityField
We need to change otherEntityField to be rather like:
"otherEntityField": "name"
and regenerate just two modified entities: Topics and Event. You can regenerate all entities or choosen one, depending on what you need. Looks cool! To do this please use commands from below.
yo jhipster:entity event yo jhipster:entity topic
It looks like below and you can replace existing files and rebuild the project 🙂
C:\hip\eventsearch>yo jhipster:entity event Found the .jhipster/Event.json configuration file, entity can be automatically generated! The entity event is being updated. ? Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten (Use arrow keys) > Yes, re generate the entity Yes, add more fields and relationships Yes, remove fields and relationships No, exit
Application is working as simply as design 😉 You can run it with code from repo available here. In next episodes we will try to improve the implementation to look better.