jhipster / generator-jhipster

JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
https://www.jhipster.tech
Apache License 2.0
21.47k stars 4.02k forks source link

updating user entity to add foreign key #3139

Closed francisyuya closed 8 years ago

francisyuya commented 8 years ago

Please follow the issue template below for bug reports and quiries. Bug reports or quiries opened without any of these info will be closed without any explanation. For feature requests, label the title with [FEATURE] and explain your use case and ideas clearly below, you can remove sections which are not relevant.

Overview of the issue

Hi. I have create a project with jhipster. I added some entities. in my database schema, I have a relationship between the entities "user" (default jhi_user entitie generate by jhipster) and "activity field" (user has a field of activity).

This is a summary of my user entitie :

/**

}

This a summary of my activity field entitie ;

@Entity @Table(name = "activity_field_info") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Document(indexName = "activityfieldinfo") public class ActivityFieldInfo implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "VERSION", nullable = false)
@Version
private int version;

@Column(name = "activity_field_name")
private String activityFieldName;

@Column(name = "activity_desc")
private String activityDesc;

// l'ens des clients (Users) du domaine d'activité
@OneToMany(mappedBy = "activityFieldInfo")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<User> ListUserInfo = new HashSet<User>();

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public int getVersion() {
    return version;
}

public void setVersion(int version) {
    this.version = version;
}

public String getActivityFieldName() {
    return activityFieldName;
}

public void setActivityFieldName(String activityFieldName) {
    this.activityFieldName = activityFieldName;
}

public String getActivityDesc() {
    return activityDesc;
}

public void setActivityDesc(String activityDesc) {
    this.activityDesc = activityDesc;
}

public Set<User> getListUserInfo() {
    return ListUserInfo;
}

public void setListUserInfo(Set<User> listUserInfo) {
    ListUserInfo = listUserInfo;
}

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }
    ActivityFieldInfo activityFieldInfo = (ActivityFieldInfo) o;
    if(activityFieldInfo.id == null || id == null) {
        return false;
    }
    return Objects.equals(id, activityFieldInfo.id);
}

@Override
public int hashCode() {
    return Objects.hashCode(id);
}

}

And that is my initial_schema liquibase for user entitie :

``` ``` But when i compile my project, jhipster is not able to change my user entity to add the foreign key. This is the message error : liquibase.exception.DatabaseException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) [Failed SQL: ALTER TABLE blog.jhi_user ADD CONSTRAINT fk_user_activityField FOREIGN KEY (activity_field_info_id) REFERENCES blog.activity_field_info (id)] at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:301) ~[liquibase-core-3.4.2.jar:na] at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) ~[liquibase-core-3.4.2.jar:na] at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:107) ~[liquibase-core-3.4.2.jar:na] at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1251) ~[liquibase-core-3.4.2.jar:na] at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1234) ~[liquibase-core-3.4.2.jar:na] at liquibase.changelog.ChangeSet.execute(ChangeSet.java:554) ~[liquibase-core-3.4.2.jar:na] at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:51) [liquibase-core-3.4.2.jar:na] at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73) [liquibase-core-3.4.2.jar:na] at liquibase.Liquibase.update(Liquibase.java:212) [liquibase-core-3.4.2.jar:na] at liquibase.Liquibase.update(Liquibase.java:192) [liquibase-core-3.4.2.jar:na] at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) [liquibase-core-3.4.2.jar:na] at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) [liquibase-core-3.4.2.jar:na] at blog.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:63) [classes/:na] at blog.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$29(AsyncSpringLiquibase.java:49) [classes/:na] at blog.config.liquibase.AsyncSpringLiquibase$$Lambda$35/1842628357.run(Unknown Source) [classes/:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25] Caused by: java.sql.SQLException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2505) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:840) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:740) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.zaxxer.hikari.proxy.StatementProxy.execute(StatementProxy.java:94) ~[HikariCP-2.4.1.jar:na] at com.zaxxer.hikari.proxy.HikariStatementProxy.execute(HikariStatementProxy.java) ~[HikariCP-2.4.1.jar:na] at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:299) ~[liquibase-core-3.4.2.jar:na] ... 17 common frames omitted 2016-03-11 18:53:55.845 ERROR 5548 --- [blog-Executor-1] b.config.liquibase.AsyncSpringLiquibase : Liquibase could not start correctly, your database is NOT ready: Migration failed for change set classpath:config/liquibase/changelog/00000000000000_initial_schema.xml::00000000000001::jhipster: Reason: liquibase.exception.DatabaseException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) [Failed SQL: ALTER TABLE blog.jhi_user ADD CONSTRAINT fk_user_activityField FOREIGN KEY (activity_field_info_id) REFERENCES blog.activity_field_info (id)] liquibase.exception.MigrationFailedException: Migration failed for change set classpath:config/liquibase/changelog/00000000000000_initial_schema.xml::00000000000001::jhipster: Reason: liquibase.exception.DatabaseException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) [Failed SQL: ALTER TABLE blog.jhi_user ADD CONSTRAINT fk_user_activityField FOREIGN KEY (activity_field_info_id) REFERENCES blog.activity_field_info (id)] at liquibase.changelog.ChangeSet.execute(ChangeSet.java:590) ~[liquibase-core-3.4.2.jar:na] at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:51) ~[liquibase-core-3.4.2.jar:na] at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73) ~[liquibase-core-3.4.2.jar:na] at liquibase.Liquibase.update(Liquibase.java:212) ~[liquibase-core-3.4.2.jar:na] at liquibase.Liquibase.update(Liquibase.java:192) ~[liquibase-core-3.4.2.jar:na] at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) ~[liquibase-core-3.4.2.jar:na] at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) ~[liquibase-core-3.4.2.jar:na] at blog.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:63) ~[classes/:na] at blog.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$29(AsyncSpringLiquibase.java:49) ~[classes/:na] at blog.config.liquibase.AsyncSpringLiquibase$$Lambda$35/1842628357.run(Unknown Source) [classes/:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25] Caused by: liquibase.exception.DatabaseException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) [Failed SQL: ALTER TABLE blog.jhi_user ADD CONSTRAINT fk_user_activityField FOREIGN KEY (activity_field_info_id) REFERENCES blog.activity_field_info (id)] at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:301) ~[liquibase-core-3.4.2.jar:na] at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) ~[liquibase-core-3.4.2.jar:na] at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:107) ~[liquibase-core-3.4.2.jar:na] at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1251) ~[liquibase-core-3.4.2.jar:na] at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1234) ~[liquibase-core-3.4.2.jar:na] at liquibase.changelog.ChangeSet.execute(ChangeSet.java:554) ~[liquibase-core-3.4.2.jar:na] ... 12 common frames omitted Caused by: java.sql.SQLException: Can't create table '.\blog#sql-784_3f.frm' (errno: 150) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2505) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:840) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:740) ~[mysql-connector-java-5.1.38.jar:5.1.38] at com.zaxxer.hikari.proxy.StatementProxy.execute(StatementProxy.java:94) ~[HikariCP-2.4.1.jar:na] at com.zaxxer.hikari.proxy.HikariStatementProxy.execute(HikariStatementProxy.java) ~[HikariCP-2.4.1.jar:na] at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:299) ~[liquibase-core-3.4.2.jar:na] ... 17 common frames omitted Thanks for your help. ##### **Motivation for or Use Case** ##### **JHipster Version(s)** 2.27 ##### **JHipster configuration, a `.yo-rc.json` file generated in the root folder** { "generator-jhipster": { "baseName": "blog", "packageName": "blog", "packageFolder": "blog", "authenticationType": "session", "hibernateCache": "ehcache", "clusteredHttpSession": "no", "websocket": "no", "databaseType": "sql", "devDatabaseType": "mysql", "prodDatabaseType": "mysql", "searchEngine": "elasticsearch", "useSass": false, "buildTool": "maven", "frontendBuilder": "gulp", "enableTranslation": true, "enableSocialSignIn": false, "rememberMeKey": "4077ba9ccc4e26f90a4fc2f5f20bf108d48ceb95", "testFrameworks": [ "gatling" ] } } ##### **Entity configuration(s) `entityName.json` files generated in the `.jhipster` directory** ##### **Browsers and Operating System** windows ##### **Reproduce the error** ##### **Related issues** ##### **Suggest a Fix**
deepu105 commented 8 years ago

This is not a jhipster issue, you have modified the code that we generated and hence you should ask this in stack overflow with a jhipster tag.

Ahrovan commented 4 months ago
  "orphanRemoval": true can not apply to entity relation? how to ?
  @jdubois @deepu105