2015-08-28 3 views
4

У меня есть модель модели UML модели. Я обновляю его все время, и после этого я запускаю jhipster-uml .xmi для регенерации объектов. Я всегда получал сообщения об ошибках. Я попытался удалить из -jhipster файлы файлы entity.json, но это не поможет. Можете ли вы рассказать мне, что является правильным обходным путем для обновления объектов во время разработки? Я также попытался запустить maven: diff task, но не повезло.Какое правильное обходное решение при обновлении объектов в jhipster?

EDIT:

Я создал новое приложение jhipster и созданные объекты из modelio модели класса UML. Все работает нормально. Затем я добавил только один атрибут моей модели и регенерировал объект из xmi-файла, и все снова сломалось.

Мой рабочий был: 1) сохранить УЯМ модель как XMi-файл 2) Запустить jhipster-ОМЛ ac2.xmi -paginate 3) Compile мое приложение в intellijIdea 4) запустить Maven задачи: МВН LiquiBase компиляции: Diff чтобы создать новый журнал изменений 5) Запуск приложений 6) Следите за сообщениями об ошибках:

1 change sets check sum 
     classpath:config/liquibase/changelog/20150828220237_added_entity_Employee.xml::20150828220237::jhipster is now: 7:dd10f74a01a95b4e48c592e796a1d352 

часть ошибки:

[DEBUG] com.acontrol.config.DatabaseConfiguration - Configuring Datasource 
[DEBUG] com.acontrol.config.DatabaseConfiguration - Configuring Liquibase 
[ERROR] org.springframework.boot.context.embedded.tomcat.TomcatStarter - Error starting Tomcat context: org.springframework.beans.factory.BeanCreationException 
[WARN] org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt 
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474) ~[spring-context-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at com.acontrol.Application.main(Application.java:72) [classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_05] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_05] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_05] 
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_05] 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) [idea_rt.jar:na] 
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155) ~[spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130) [spring-boot-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    ... 10 common frames omitted 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.setFilterChainProxySecurityConfigurer(org.springframework.security.config.annotation.ObjectPostProcessor,java.util.List) throws java.lang.Exception; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.core.userdetails.UserDetailsService com.acontrol.config.SecurityConfiguration.userDetailsService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.acontrol.repository.UserRepository com.acontrol.security.UserDetailsService.userRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#5550ca83' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#5550ca83': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[s 
+0

Я не уверен на 100% больше, потому что я удалил весь проект и вновь породил целое приложение, но каждый раз, когда я пытаюсь обновить УЙ-модель я получил сообщение об ошибке. Я хотел бы знать, каков правильный способ обновления объектов. Я всегда перезаписываю старые объекты и удаляю папку .jhipster перед обновлением. Что может быть правильным способом или это возможно даже с помощью jhipster-uml? – Sami

ответ

3

Когда я хочу, чтобы восстановить все мои таблицы я это делаю

  1. Обновление модели в MODELIO
  2. Re-экспорт XMI
  3. rm -rf ./.jhipster/
  4. Открыть файл src/main/resources/config/liquibase/master.xml и удалить все <include> элементы, кроме
    • config/liquibase/changelog/00000000000000_initial_schema.xml и
    • Комментарий "JHipster добавит LiquiBase списком изменений здесь"
  5. Иногда приходится удалять строки (за исключением первого, имеющего ID ='00000000000001') из таблицы DATABASECHANGELOG
  6. Заново запустить jhipster-uml
+0

СПАСИБО! Я попробую это. Я расскажу вам позже, как это было, но если он работает в вашем случае, я думаю, что это будет и в моем случае! – Sami

+0

Goo luck! Я также нашел некоторую документацию по адресу http://jhipster.github.io/development.html –

+0

Это работает, приятно :) Вы узнали какие-либо ошибки или странные вещи при создании объектов модели Modelio? У меня есть один случай (oneToOne-ratio), который не работает, другие подобные. Эта документация не дает рабочего решения IMHO. BTW Мне пришлось удалить мои таблицы также из базы данных ... – Sami

3

Проблема что jhipster-uml не поддерживает разработку схемы. Другими словами, как только jhipster-uml генерирует ваши активы приложения и изменения в linibase, он забывает, что он сделал, и когда он запускается в следующий раз, он генерирует все с нуля - это отлично подходит для большинства артефактов, но NOT для изменений ,

Есть два способа решить эту проблему:

  • Удалите журналы изменений перед повторным запуском jhipster

    • подробно в другой ответ, в дополнение удалить все существующие таблицы БД перед повторным запуском вашего заявление.
  • Использование jhipster-ОМЛ с LiquiBase дифф

    1. Изменить ваш UML модель
    2. Экспорт XMI
    3. Run jhipster-uml
    4. Revert все изменения в том числе master.xml списком изменений (с использованием VCS или истории файлов)
    5. Скомпилируйте код Java: compileJava
    6. Run Liquibase diff liquibaseDiffChangelog: это сравнивает ваши сущности с текущим состоянием базы данных и генерирует фактический журнал изменений, то есть содержит изменения и добавляет запись в master.xml.
    7. Запуск приложения с bootRun: задача LiquiBase будет выполнять какие-либо выдающиеся списков изменений

Примечание: будьте осторожны при удалении и переименовании объектов: вы должны пойти и удалить ряд сиротой файлы из интерфейсных активов, классы Java, списки изменений, таблицы db, объекты .jhipster.

+0

Просто помните, что ничего не удалит.Итак, если вы удалите объект из схемы, вам придется вручную удалить классы из проекта. –

0

На всякий случай кто-то сталкивается с этой ситуацией и использует Gradle. Это то, что я сделал:

1st. Check master.xml file and files included there to check everything is as expected.

Тогда clearChecksums.

согласно документации liquidbase

это Removes current checksums from database. On next run checksums will be recomputed.

Так

Открыть liquidbase.gradle И добавил запись folowwing:

task liquibaseClearChecksums(dependsOn: compileJava, type: JavaExec) { 
    group = "liquibase" 

    classpath sourceSets.main.runtimeClasspath 
    classpath configurations.liquibase 
    main = "liquibase.integration.commandline.Main" 

    args "--changeLogFile=src/main/resources/config/liquibase/changelog/" + buildTimestamp() +"_changelog.xml" 
    args "--referenceUrl=hibernate:spring:com.asimplemodule.deptmanager.domain?dialect=com.asimplemodule.deptmanager.domain.util.FixedPostgreSQL82Dialect&hibernate.ejb.naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy" 
    args "--username=mycoolapp" 
    args "--password=mycoolapp" 
    args "--url=jdbc:postgresql://localhost:5432/mycoolApp" 
    args "--driver=org.postgresql.Driver" 
    args "clearChecksums" 

} 

Тогда просто запустить gradle liquibaseClearChecksums

И это исправило мою проблему.

Надеется, что это помогает кому-то

Смежные вопросы