hello

I have some entity in my application, when I declare a method starting with 
term "is" the database will be updated with a new field whereas I didn't 
declare that field as a database field

here is an example:

  | import static org.jboss.seam.ScopeType.SESSION;
  | 
  | import java.io.Serializable;
  | import java.util.HashSet;
  | import java.util.Set;
  | 
  | import javax.persistence.CascadeType;
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.FetchType;
  | import javax.persistence.GeneratedValue;
  | import javax.persistence.Id;
  | import javax.persistence.OneToMany;
  | import javax.persistence.Table;
  | 
  | import org.hibernate.validator.NotNull;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | 
  | @Entity
  | @Table(name ="group_permission")
  | @Name("group")
  | @Scope(SESSION)
  | public class Group implements Serializable{
  | 
  |     private String name;
  |     private Long id;
  |     private Integer permissionGroup = new Integer(0);
  |     private Set<Permission> permissions =new  HashSet<Permission>();
  |     private static final int Export_Permission = 8;
  |     private static final String All_Permission = "*";
  |     
  |     @OneToMany(mappedBy="group", fetch = FetchType.EAGER 
,cascade=CascadeType.ALL )
  |     public Set<Permission> getPermissions() {
  |             return permissions;
  |     }
  |     
  |     public void setPermissions(Set<Permission> permissions) {
  |             this.permissions = permissions;
  |     }
  |     @Id @GeneratedValue
  |     @Column(name = "id")
  |     public Long getId() {
  |             return id;
  |     }
  |     public void setId(Long id) {
  |             this.id = id;
  |     }
  |     
  |     @NotNull
  |     @Column(name="name")
  |     public String getName() {
  |             return name;
  |     }
  |     public void setName(String name) {
  |             this.name = name;
  |     }
  |     public boolean equals(Object o) {
  |             if (o == null)
  |                     return false;
  | 
  |             if (!(o instanceof Group))
  |                     return false;
  | 
  |             Group that = (Group) o;
  | 
  |             return this.getName().equals(that.getName());
  |     }
  | 
  |     public int hashCode() {
  |             
  |             return this.getName().hashCode()+720;
  | 
  |     }
  | 
  |     @Column(name="permissionGroup")
  |     public Integer getPermissionGroup() {
  |             return permissionGroup;
  |     }
  | 
  |     public void setPermissionGroup(Integer permissionGroup) {
  |             this.permissionGroup = permissionGroup;
  |     }
  |     public void setPermission(boolean permission){
  |             permissionGroup=0;
  |             if(permission){
  |                     permissionGroup=permissionGroup | Export_Permission;
  |             }
  |             
  |     }
  |     public void addPermission(ColumnHeader ch ,String categoryName){
  |             
  |             if(permissions==null){
  |                     permissions=new HashSet<Permission>();
  |             }
  |             if(ch.isDisplayable() ||ch.isSearchable()){
  |                     Permission permission=new Permission();
  |                     permission.setGroup(this);
  |                     permission.setCategory(categoryName);
  |                     permission.displayablePermission(ch.isDisplayable());
  |                     permission.searchablePermission(ch.isSearchable());
  |                     permission.setFieldName(ch.getName());
  |                     permissions.add(permission);
  |             }
  |     }
  |     
  |     public boolean hasExportPermission(){
  |             if((Export_Permission & Export_Permission) == Export_Permission)
  |                     return true;
  |             else
  |                     return false;
  |     }
  | 
  |     public void setExportPermission(boolean export){
  |             if(export) {
  |                     permissionGroup = permissionGroup | Export_Permission;
  |             }else {
  |                     permissionGroup = permissionGroup & ~Export_Permission;
  |             }
  |     }
  |  
  |     public boolean hasDisplayPermission(String categoryName, String 
fieldName) {
  |             for(Permission p: permissions) {
  |                     if(p.getCategory().trim().equals(All_Permission)){
  |                             return true;
  |                     }
  |                     if(p.getCategory().equals(categoryName) && 
p.getFieldName().equals(fieldName)) {
  |                             return p.hasDisplayablePermission();
  |                     }
  |             }
  |             return false;
  |     }
  | 
  |     public boolean hasSearchPermission(String categoryName, String 
fieldName) {
  |             for(Permission p: permissions) {
  |                     if(p.getCategory().equals(All_Permission)){
  |                             return true;
  |                     }
  |                     if(p.getCategory().equals(categoryName) && 
p.getFieldName().equals(fieldName)) {
  |                             return p.hasSearchablePermission();
  |                     }
  |             }
  |             return false;
  |     }
  | 
  | }
  | 
  | 

as you can see in above code represented in blue color, I have some utility 
method in my entity, if I rename the method hasExportPermission() to 
isExportPermission() the EJB will create a field in corresponding table with 
name exportPermission and because it returns boolean the type of the field will 
be tinyint(1) (using mySql)

I expect since I didn't declare it by annotations it shouldn't consider it as a 
table field, but it does!!!!

I want to know whether this is a bug or I made a mistake somewhere 

it is remarkable to say that I am using JBoss Seam framework, but I don't think 
this is its fault.

thank you very much

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4087492#4087492

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4087492
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to