1 Reply Latest reply on Apr 9, 2009 1:27 PM by Chip DeBergh

    Enumtransfer between entities, one without EnumType.STRING

    Chip DeBergh Newbie

      Hello,

      I have a application running on Jboss AS 4.2.2 that uses entities with enum attributes. I noticed an occurrence while stepping through a method that got me curious. After a get/set of an enum value from one entity to the other, the object being set contained the same null value it previously held. No exception was throw nor debug log printed. The entity getting from had an annotation for that field that stated @Enumerated(EnumType.STRING) while the entity being set did not have this annotation. However, as expected, an exception was encountered when the entity, that was set, was committed to the database.

      I don't understand why the value was not transferred, or at least why no exception was thrown or error logged.

      Here is some code to illustrate:

      public enum ColorEnum {
       BLONDE("Blonde"),
       RED("Red"),
       TAN("Tan");
      }
      
      @Entity
      @Table(name = "DOG")
      public class Dog {
       @Column(name = "COAT_COLOR"
       @Enumerated(EnumType.STRING)
       ColorEnum coatColor;
      
       public void setCoatColor(ColorEnum coatColor) {
       this.coatColor = coatColor;
       }
      
       public ColorEnumgetCoatColor() { return this.coatColor; }
      }
      
      @Entity
      @Table(name = "CAT")
      public class Cat {
       @Column(name = "COAT_COLOR"
       ColorEnum coatColor;
      
       public void setCoatColor(ColorEnum coatColor) {
       this.coatColor = coatColor;
       }
      
       public ColorEnumgetCoatColor() { return this.coatColor; }
      }
      
      
       public void newCatWithDogCoat() {
       ...
       // cat.getCoatColor() returns null
       // dog.getCoatColor() returns red
       cat.setCoatColor(dog.getCoatColor());
       ...
       // cat.getCoatColor() still returns null (no errors/exceptions)
       }
      


      After adding @Enumerated(EnumType.STRING) to the Cat class, cat.getCoatColor() returns red

      So why are there no exceptions/errors until it fails to save to the database?

      Perhaps this is a bug?