Uploaded image for project: 'Tools (JBoss Tools)'
  1. Tools (JBoss Tools)
  2. JBIDE-26458

Import Entities from DB with ManyToMany relationships doesn't manage mappedBy

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • 4.29.1.Final
    • 4.6.0.Final
    • hibernate
    • None
    • Hide

      Import this schema into database and import entity from tables.

      CREATE TABLE "dbm"."SecContext" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "Descriz" VARCHAR(150) NOT NULL,
      "Cod" INTEGER NOT NULL,
      "ModuleId" INTEGER NOT NULL,
      "data" TIMESTAMP WITH TIME ZONE NULL,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecFunction" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "Descriz" VARCHAR(200) NOT NULL,
      "Tag" INTEGER NOT NULL,
      "Type" TINYINT NOT NULL DEFAULT 0,
      "ContextId" INTEGER NOT NULL,
      "Critical" BIT NOT NULL DEFAULT 1,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecGroup" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "Descriz" VARCHAR(150) NOT NULL,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecGroupDB" (
      "GroupId" INTEGER NOT NULL,
      "DBId" SMALLINT NOT NULL,
      PRIMARY KEY ( "DBId" ASC, "GroupId" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecGroupRole" (
      "GroupID" INTEGER NOT NULL,
      "RoleId" INTEGER NOT NULL,
      PRIMARY KEY ( "GroupID" ASC, "RoleId" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecGroupUser" (
      "GroupId" INTEGER NOT NULL,
      "UserId" INTEGER NOT NULL,
      PRIMARY KEY ( "GroupId" ASC, "UserId" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecModule" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "Descriz" VARCHAR(150) NOT NULL,
      "Cod" INTEGER NOT NULL,
      "ApplicationId" SMALLINT NULL,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecRole" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "Descriz" VARCHAR(150) NOT NULL,
      "ApplicationId" SMALLINT NULL,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecRoleDB" (
      "RoleId" INTEGER NOT NULL,
      "DBId" SMALLINT NOT NULL,
      PRIMARY KEY ( "RoleId" ASC, "DBId" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecRoleFunction" (
      "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "RoleId" INTEGER NOT NULL,
      "FunctionId" INTEGER NOT NULL,
      "FlagRead" BIT NULL,
      "FlagInsert" BIT NULL,
      "FlagEdit" BIT NULL,
      "FlagDelete" BIT NULL,
      "FlagLookup" BIT NULL,
      PRIMARY KEY ( "Id" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."SecUserRole" (
      "UserID" INTEGER NOT NULL,
      "RoleId" INTEGER NOT NULL,
      PRIMARY KEY ( "UserID" ASC, "RoleId" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."ss_DbXUser" (
      "CodUser" INTEGER NOT NULL,
      "CodDb" SMALLINT NOT NULL,
      PRIMARY KEY ( "CodUser" ASC, "CodDb" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."ss_Users" (
      "UserID" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
      "UserName" VARCHAR(30) NOT NULL,
      "FullName" VARCHAR(45) NOT NULL,
      "Password" VARCHAR(60) NOT NULL,
      PRIMARY KEY ( "UserID" ASC )
      ) IN "system";
      CREATE TABLE "dbm"."P00DBG" (
      "CODICE" SMALLINT NOT NULL DEFAULT AUTOINCREMENT,
      "DBDESCRIZ" CHAR(50) NULL,
      PRIMARY KEY ( "CODICE" ASC )
      ) IN "system";
      ALTER TABLE "dbm"."SecGroupDB" ADD CONSTRAINT "SecGroupDB_P00DBG" NOT NULL FOREIGN KEY ( "DBId" ASC ) REFERENCES "dbm"."P00DBG" ( "CODICE" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."SecGroupDB" ADD CONSTRAINT "SecGroupDB_SecGroup" NOT NULL FOREIGN KEY ( "GroupId" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."SecGroupRole" ADD CONSTRAINT "SecGroupRole_SecGroup" NOT NULL FOREIGN KEY ( "GroupID" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."SecGroupRole" ADD CONSTRAINT "SecGroupRole_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE;
      ALTER TABLE "dbm"."SecGroupUser" ADD CONSTRAINT "SecGroupUser_SecGroup" NOT NULL FOREIGN KEY ( "GroupId" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."SecGroupUser" ADD CONSTRAINT "ss_Users5" NOT NULL FOREIGN KEY ( "UserId" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE;
      ALTER TABLE "dbm"."SecRoleFunction" ADD CONSTRAINT "SecRoleFunction_SecFunction" NOT NULL FOREIGN KEY ( "FunctionId" ASC ) REFERENCES "dbm"."SecFunction" ( "Id" ) ON UPDATE CASCADE;
      ALTER TABLE "dbm"."SecRoleFunction" ADD CONSTRAINT "SecRoleFunction_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."SecUserRole" ADD CONSTRAINT "SecUserRole_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE;
      ALTER TABLE "dbm"."SecUserRole" ADD CONSTRAINT "ss_Users6" NOT NULL FOREIGN KEY ( "UserID" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."ss_DbXUser" ADD CONSTRAINT "ss_DbXUser_P00DBG" NOT NULL FOREIGN KEY ( "CodDb" ASC ) REFERENCES "dbm"."P00DBG" ( "CODICE" ) ON UPDATE CASCADE ON DELETE CASCADE;
      ALTER TABLE "dbm"."ss_DbXUser" ADD CONSTRAINT "ss_Users7" NOT NULL FOREIGN KEY ( "CodUser" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE ON DELETE CASCADE;

      Show
      Import this schema into database and import entity from tables. CREATE TABLE "dbm"."SecContext" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "Descriz" VARCHAR(150) NOT NULL, "Cod" INTEGER NOT NULL, "ModuleId" INTEGER NOT NULL, "data" TIMESTAMP WITH TIME ZONE NULL, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecFunction" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "Descriz" VARCHAR(200) NOT NULL, "Tag" INTEGER NOT NULL, "Type" TINYINT NOT NULL DEFAULT 0, "ContextId" INTEGER NOT NULL, "Critical" BIT NOT NULL DEFAULT 1, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecGroup" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "Descriz" VARCHAR(150) NOT NULL, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecGroupDB" ( "GroupId" INTEGER NOT NULL, "DBId" SMALLINT NOT NULL, PRIMARY KEY ( "DBId" ASC, "GroupId" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecGroupRole" ( "GroupID" INTEGER NOT NULL, "RoleId" INTEGER NOT NULL, PRIMARY KEY ( "GroupID" ASC, "RoleId" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecGroupUser" ( "GroupId" INTEGER NOT NULL, "UserId" INTEGER NOT NULL, PRIMARY KEY ( "GroupId" ASC, "UserId" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecModule" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "Descriz" VARCHAR(150) NOT NULL, "Cod" INTEGER NOT NULL, "ApplicationId" SMALLINT NULL, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecRole" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "Descriz" VARCHAR(150) NOT NULL, "ApplicationId" SMALLINT NULL, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecRoleDB" ( "RoleId" INTEGER NOT NULL, "DBId" SMALLINT NOT NULL, PRIMARY KEY ( "RoleId" ASC, "DBId" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecRoleFunction" ( "Id" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "RoleId" INTEGER NOT NULL, "FunctionId" INTEGER NOT NULL, "FlagRead" BIT NULL, "FlagInsert" BIT NULL, "FlagEdit" BIT NULL, "FlagDelete" BIT NULL, "FlagLookup" BIT NULL, PRIMARY KEY ( "Id" ASC ) ) IN "system"; CREATE TABLE "dbm"."SecUserRole" ( "UserID" INTEGER NOT NULL, "RoleId" INTEGER NOT NULL, PRIMARY KEY ( "UserID" ASC, "RoleId" ASC ) ) IN "system"; CREATE TABLE "dbm"."ss_DbXUser" ( "CodUser" INTEGER NOT NULL, "CodDb" SMALLINT NOT NULL, PRIMARY KEY ( "CodUser" ASC, "CodDb" ASC ) ) IN "system"; CREATE TABLE "dbm"."ss_Users" ( "UserID" INTEGER NOT NULL DEFAULT AUTOINCREMENT, "UserName" VARCHAR(30) NOT NULL, "FullName" VARCHAR(45) NOT NULL, "Password" VARCHAR(60) NOT NULL, PRIMARY KEY ( "UserID" ASC ) ) IN "system"; CREATE TABLE "dbm"."P00DBG" ( "CODICE" SMALLINT NOT NULL DEFAULT AUTOINCREMENT, "DBDESCRIZ" CHAR(50) NULL, PRIMARY KEY ( "CODICE" ASC ) ) IN "system"; ALTER TABLE "dbm"."SecGroupDB" ADD CONSTRAINT "SecGroupDB_P00DBG" NOT NULL FOREIGN KEY ( "DBId" ASC ) REFERENCES "dbm"."P00DBG" ( "CODICE" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."SecGroupDB" ADD CONSTRAINT "SecGroupDB_SecGroup" NOT NULL FOREIGN KEY ( "GroupId" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."SecGroupRole" ADD CONSTRAINT "SecGroupRole_SecGroup" NOT NULL FOREIGN KEY ( "GroupID" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."SecGroupRole" ADD CONSTRAINT "SecGroupRole_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE; ALTER TABLE "dbm"."SecGroupUser" ADD CONSTRAINT "SecGroupUser_SecGroup" NOT NULL FOREIGN KEY ( "GroupId" ASC ) REFERENCES "dbm"."SecGroup" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."SecGroupUser" ADD CONSTRAINT "ss_Users5" NOT NULL FOREIGN KEY ( "UserId" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE; ALTER TABLE "dbm"."SecRoleFunction" ADD CONSTRAINT "SecRoleFunction_SecFunction" NOT NULL FOREIGN KEY ( "FunctionId" ASC ) REFERENCES "dbm"."SecFunction" ( "Id" ) ON UPDATE CASCADE; ALTER TABLE "dbm"."SecRoleFunction" ADD CONSTRAINT "SecRoleFunction_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."SecUserRole" ADD CONSTRAINT "SecUserRole_SecRole" NOT NULL FOREIGN KEY ( "RoleId" ASC ) REFERENCES "dbm"."SecRole" ( "Id" ) ON UPDATE CASCADE; ALTER TABLE "dbm"."SecUserRole" ADD CONSTRAINT "ss_Users6" NOT NULL FOREIGN KEY ( "UserID" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."ss_DbXUser" ADD CONSTRAINT "ss_DbXUser_P00DBG" NOT NULL FOREIGN KEY ( "CodDb" ASC ) REFERENCES "dbm"."P00DBG" ( "CODICE" ) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE "dbm"."ss_DbXUser" ADD CONSTRAINT "ss_Users7" NOT NULL FOREIGN KEY ( "CodUser" ASC ) REFERENCES "dbm"."ss_Users" ( "UserID" ) ON UPDATE CASCADE ON DELETE CASCADE;
    • -

    Description

      Import from entities tool does not correctly handle the bidirectional ManyToMany relationships because in some cases it does not define mappedBy on one side.

      example:

      public class SecGroup implements java.io.Serializable {
      ....
      	@ManyToMany(fetch = FetchType.LAZY)
      	@JoinTable(name = "SecGroupUser", schema = "dbm", joinColumns = {
      			@JoinColumn(name = "GroupId", nullable = false, updatable = false) }, inverseJoinColumns = {
      					@JoinColumn(name = "UserId", nullable = false, updatable = false) })
      	public Set<SsUsers> getSsUserses() {
      		return this.ssUserses;
      	}
      ....
      }
      
      public class SsUsers implements java.io.Serializable {
      ...
      	@ManyToMany(fetch = FetchType.LAZY)
      	@JoinTable(name = "SecGroupUser", schema = "dbm", joinColumns = {
      			@JoinColumn(name = "UserId", nullable = false, updatable = false) }, inverseJoinColumns = {
      					@JoinColumn(name = "GroupId", nullable = false, updatable = false) })
      	public Set<SecGroup> getSecGroups() {
      		return this.secGroups;
      	}
      ...
      }
      

      It must be for example

      public class SecGroup implements java.io.Serializable {
      ....
      	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "secGroups")
      	public Set<SsUsers> getSsUserses() {
      		return this.ssUserses;
      	}
      ....
      }
      
      public class SsUsers implements java.io.Serializable {
      ...
      	@ManyToMany(fetch = FetchType.LAZY)
      	@JoinTable(name = "SecGroupUser", schema = "dbm", joinColumns = {
      			@JoinColumn(name = "UserId", nullable = false, updatable = false) }, inverseJoinColumns = {
      					@JoinColumn(name = "GroupId", nullable = false, updatable = false) })
      	public Set<SecGroup> getSecGroups() {
      		return this.secGroups;
      	}
      ...
      }
      

      Attachments

        Activity

          People

            kaers@redhat.com Koen Aers
            matt30b Matteo Barrese (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: