[forge-issues] [JBoss JIRA] (FORGE-572) Forge scaffold faces creates view beans with Id always Long against user-generated Entities

claudio perrotta (JIRA) jira-events at lists.jboss.org
Tue Apr 23 16:52:54 EDT 2013


    [ https://issues.jboss.org/browse/FORGE-572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12769585#comment-12769585 ] 

claudio perrotta edited comment on FORGE-572 at 4/23/13 4:52 PM:
-----------------------------------------------------------------

I'll try to describe my scenario.

First i have designed a DB with MySql Workbench.
Then i create a project through forge with this sequence of commands 
1) new-project --named forgetest --topLevelPackage org.forgetest
2) persistence setup --provider HIBERNATE --container JBOSS_AS7 ; (and choosed org.jboss.spec:jboss-javaee-6.0:pom::3.0.2.Final and org.hibernate:hibernate-entitymanager:::4.2.0.Final)
3) generate-entities configure-settings --dialect  org.hibernate.dialect.MySQLDialect --driver com.mysql.jdbc.Driver --url  jdbc:mysql://*******:3306/******_db --pathToDriver /home/****/server_runtime_jboss/jboss-as-7.1.1.Final/modules/com/mysql/main/mysql-connector-java-5.1.24.jar --user *** --password ****
4) scaffold setup --scaffoldType faces;
5) richfaces setup
6) scaffold from-entity org.forgetest.model.* --overwrite;


For example look at the entity GeoCities

-----------------------------------------
CREATE  TABLE IF NOT EXISTS `db`.`geo_cities` (
  `city_iso_code` VARCHAR(5) NOT NULL ,
  `city_text` VARCHAR(110) NULL ,
  `isoCodeRegione` VARCHAR(5) NOT NULL ,
  `geo_latitude` VARCHAR(45) NULL ,
  `geo_longitude` VARCHAR(45) NULL ,
  PRIMARY KEY (`city_iso_code`) ,
  INDEX `fk_geo_citta_geo_regioni1_idx` (`isoCodeRegion` ASC) ,
  CONSTRAINT `fk_geo_citta_geo_regioni1`
    FOREIGN KEY (`isoCodeRegion` )
    REFERENCES `db`.`geo_regions` (`region_iso_code` )
)
ENGINE = InnoDB;
-----------------------------------------

after generate-entities have :

-----------------------------------------
@Entity
@Table(name = "geo_cities")
public class GeoCities implements java.io.Serializable
{
   private String cityIsoCode;
   [...]
   @Id
   @Column(name = "city_iso_code", unique = true, nullable = false, length = 5)
   public String getCityIsoCode()
   {
      return this.cityIsoCode;
   }
-----------------------------------------

and this a snippet of the relative bean

-----------------------------------------
@Named
@Stateful
@ConversationScoped
public class GeoCitiesBean implements Serializable
{
   private static final long serialVersionUID = 1L;
   /*
    * Support creating and retrieving GeoCities entities
    */
   private Long id;
   public Long getId()
   {
      return this.id;
   }
--------------------------------------------

And after the deploy there isn't any field relative to the ISO code when i try to add a city...

i hope that is useful!
                
      was (Author: reskejal):
    I'll try to describe my scenario.

First i have designed a DB with MySql Workbench.
Then i create a project through forge with this sequence of commands 
1) new-project --named forgetest --topLevelPackage org.forgetest
2) persistence setup --provider HIBERNATE --container JBOSS_AS7 ; (and choosed org.jboss.spec:jboss-javaee-6.0:pom::3.0.2.Final and org.hibernate:hibernate-entitymanager:::4.2.0.Final)
3) generate-entities configure-settings --dialect  org.hibernate.dialect.MySQLDialect --driver com.mysql.jdbc.Driver --url  jdbc:mysql://*******:3306/******_db --pathToDriver /home/****/server_runtime_jboss/jboss-as-7.1.1.Final/modules/com/mysql/main/mysql-connector-java-5.1.24.jar --user *** --password ****
4) scaffold setup --scaffoldType faces;
5) richfaces setup
6) scaffold from-entity org.forgetest.model.* --overwrite;


For example look at the entity GeoCities

-----------------------------------------
CREATE  TABLE IF NOT EXISTS `db`.`geo_cities` (
  `city_iso_code` VARCHAR(5) NOT NULL ,
  `city_text` VARCHAR(110) NULL ,
  `isoCodeRegione` VARCHAR(5) NOT NULL ,
  `geo_latitude` VARCHAR(45) NULL ,
  `geo_longitude` VARCHAR(45) NULL ,
  PRIMARY KEY (`city_iso_code`) ,
  INDEX `fk_geo_citta_geo_regioni1_idx` (`isoCodeRegion` ASC) ,
  CONSTRAINT `fk_geo_citta_geo_regioni1`
    FOREIGN KEY (`isoCodeRegion` )
    REFERENCES `db`.`geo_regions` (`region_iso_code` )
)
ENGINE = InnoDB;
-----------------------------------------

after generate-entities have :

-----------------------------------------
@Entity
@Table(name = "geo_cities")
public class GeoCities implements java.io.Serializable
{
   private String cityIsoCode;
   [...]
   @Id
   @Column(name = "city_iso_code", unique = true, nullable = false, length = 5)
   public String getCityIsoCode()
   {
      return this.cityIsoCode;
   }
-----------------------------------------

and this a snippet of the relative bean

-----------------------------------------
@Named
@Stateful
@ConversationScoped
public class GeoCitiesBean implements Serializable
{
   private static final long serialVersionUID = 1L;
   /*
    * Support creating and retrieving GeoCities entities
    */
   private Long id;
   public Long getId()
   {
      return this.id;
   }
--------------------------------------------

And after the deploy there isn't any field relative to the ISO code when i tray to add a city...

i hope that is useful!
                  
> Forge scaffold faces creates view beans with Id always Long against user-generated Entities
> -------------------------------------------------------------------------------------------
>
>                 Key: FORGE-572
>                 URL: https://issues.jboss.org/browse/FORGE-572
>             Project: Forge
>          Issue Type: Bug
>          Components: Scaffold
>    Affects Versions: 1.0.2.Final
>         Environment: JBoss Developer Studio 5 Beta 2, Embedded Forge 1.0.2.Final
>            Reporter: Will Dinyes
>            Priority: Minor
>              Labels: starter
>             Fix For: 1.1.0.Final
>
>
> When running:
> scaffold from-entity ~.domain.* --overwrite
> The generated view Bean will always use an id field as a long, even if the entity uses a different type for the @Id.  For instance, this code, in an Entity class called ValMealtype:
> @Id
> @GeneratedValue(strategy=GenerationType.IDENTITY)
> @Column(unique=true, nullable=false, length=20)
> private String meal;
> Generates, in ValMealtypeBean:
> private Long id;
> <-- associated gettters and setters -->
> And, later in the class:
> return ValMealtypeBean.this.entityManager.find(ValMealtype.class, Long.valueOf(value));
> That line in particular doesn't work at all, of course, since a Long can't be parsed out of a non-numeric String.  I suppose I could name my meals with hex digits . . . CAFE . . . BEEF . . . but sadly, Chicken isn't going to fly.
> Basically, scaffold probably needs to look at the type of @Id in the entity and use that to set the id field type in the generated bean.
> As this is reported against a non-current release, I understand it may be fixed already.  In this case, a new Beta of JBDS 5 is probably in order, as that's where I'm seeing this issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the forge-issues mailing list