I've got a simple parent/child relationship (one-to-many) between two objects; 
ProductCategory->Product

Here's the two domain object classes:


  | @Entity
  | @Table(name="tbl_product_category")
  | public class ProductCategory implements Serializable
  | {
  |     private long categoryId;
  |     private String name;
  |     private String description;
  |     private List<Product> products;
  |     
  |     public ProductCategory()
  |     {
  |     }
  | 
  |     @Id @GeneratedValue(strategy=GenerationType.AUTO)
  |     public long getCategoryId()
  |     {
  |             return this.categoryId;
  |     }
  | 
  |     public void setCategoryId(long categoryId)
  |     {
  |             this.categoryId = categoryId;
  |     }
  | 
  |     @NotNull @Length(max=500)
  |     public String getDescription()
  |     {
  |             return this.description;
  |     }
  | 
  |     public void setDescription(String description)
  |     {
  |             this.description = description;
  |     }
  | 
  |     @NotNull @Length(max=50)
  |     public String getName()
  |     {
  |             return this.name;
  |     }
  | 
  |     public void setName(String name)
  |     {
  |             this.name = name;
  |     }
  | 
  |     @OneToMany(mappedBy="productCategory", fetch=FetchType.EAGER)
  |     public List<Product> getProducts()
  |     {
  |             return this.products;
  |     }
  | 
  |     public void setProducts(List<Product> products)
  |     {
  |             this.products = products;
  |     }
  | }
  | 
  | @Entity
  | @Table(name="tbl_product")
  | public class Product implements Serializable
  | {
  |     private long productId;
  |     private ProductCategory productCategory;
  |     private String productCode;
  |     private String shortName;
  |     private String longName;
  |     private String summary;
  |     private String description;
  |     private float unitPrice;
  |     private float weight;
  |     private float height;
  |     private float width;
  |     private float length;
  |     private float insuredValue;
  |     private Date nextAvailableDate;
  |     private String thumbnail;
  |     private String photo;
  |     private boolean isAddOn;
  |     private List<Configuration> configurations;
  | 
  |     public Product()
  |     {
  |     }
  |     
  |     @Length(max=1000)
  |     public String getDescription()
  |     {
  |             return this.description;
  |     }
  | 
  |     public void setDescription(String description)
  |     {
  |             this.description = description;
  |     }
  | 
  |     public float getHeight()
  |     {
  |             return this.height;
  |     }
  | 
  |     public void setHeight(float height)
  |     {
  |             this.height = height;
  |     }
  | 
  |     public float getInsuredValue()
  |     {
  |             return this.insuredValue;
  |     }
  | 
  |     public void setInsuredValue(float insuredValue)
  |     {
  |             this.insuredValue = insuredValue;
  |     }
  | 
  |     public float getLength()
  |     {
  |             return this.length;
  |     }
  | 
  |     public void setLength(float length)
  |     {
  |             this.length = length;
  |     }
  |     
  |     @Length(max=50) @NotNull
  |     public String getPhoto()
  |     {
  |             return this.photo;
  |     }
  | 
  |     public void setPhoto(String photo)
  |     {
  |             this.photo = photo;
  |     }
  |     
  |     @Length(min=5,max=20) @NotNull
  |     public String getProductCode()
  |     {
  |             return this.productCode;
  |     }
  | 
  |     public void setProductCode(String productCode)
  |     {
  |             this.productCode = productCode;
  |     }
  | 
  |     @Id @GeneratedValue(strategy=GenerationType.AUTO)
  |     public long getProductId()
  |     {
  |             return this.productId;
  |     }
  | 
  |     public void setProductId(long productId)
  |     {
  |             this.productId = productId;
  |     }
  |     
  |     @Length(max=50) @NotNull
  |     public String getThumbnail()
  |     {
  |             return this.thumbnail;
  |     }
  | 
  |     public void setThumbnail(String thumbnail)
  |     {
  |             this.thumbnail = thumbnail;
  |     }
  | 
  |     public float getUnitPrice()
  |     {
  |             return this.unitPrice;
  |     }
  | 
  |     public void setUnitPrice(float unitPrice)
  |     {
  |             this.unitPrice = unitPrice;
  |     }
  | 
  |     public float getWeight()
  |     {
  |             return this.weight;
  |     }
  | 
  |     public void setWeight(float weight)
  |     {
  |             this.weight = weight;
  |     }
  | 
  |     public float getWidth()
  |     {
  |             return this.width;
  |     }
  | 
  |     public void setWidth(float width)
  |     {
  |             this.width = width;
  |     }
  |     
  |     @Length(max=1000)
  |     public String getSummary()
  |     {
  |             return this.summary;
  |     }
  | 
  |     public void setSummary(String summary)
  |     {
  |             this.summary = summary;
  |     }
  |     
  |     @OneToMany(mappedBy="product", fetch=FetchType.EAGER)
  |     public List<Configuration> getConfigurations()
  |     {
  |             return this.configurations;
  |     }
  | 
  |     public void setConfigurations(List<Configuration> configurations)
  |     {
  |             this.configurations = configurations;
  |     }
  | 
  |     @ManyToOne
  |     public ProductCategory getProductCategory()
  |     {
  |             return this.productCategory;
  |     }
  | 
  |     public void setProductCategory(ProductCategory productCategory)
  |     {
  |             this.productCategory = productCategory;
  |     }
  |     
  |     @Length(max=100) @NotNull
  |     public String getLongName()
  |     {
  |             return this.longName;
  |     }
  | 
  |     public void setLongName(String longName)
  |     {
  |             this.longName = longName;
  |     }
  |     
  |     @Length(max=50) @NotNull
  |     public String getShortName()
  |     {
  |             return this.shortName;
  |     }
  | 
  |     public void setShortName(String shortName)
  |     {
  |             this.shortName = shortName;
  |     }
  | 
  |     @NotNull
  |     public Date getNextAvailableDate()
  |     {
  |             return this.nextAvailableDate;
  |     }
  | 
  |     public void setNextAvailableDate(Date nextAvailableDate)
  |     {
  |             this.nextAvailableDate = nextAvailableDate;
  |     }
  | 
  |     public boolean isAddOn()
  |     {
  |             return this.isAddOn;
  |     }
  | 
  |     public void setAddOn(boolean isAddOn)
  |     {
  |             this.isAddOn = isAddOn;
  |     }
  | }
  | 

When I query like this, from the category down:


  |     public List<ProductCategory> getAllCategories()
  |     {
  |             Query q = this.em.createQuery("select pc from ProductCategory 
pc where pc.products.addOn = false");
  |             return q.getResultList();
  |     }
  | 

It returns only the category that = true, not false...the exact opposite of 
what I want!  If I switch this to true, I get the same results.

If I query at the Product level, like so:


  |     public List<Product> getNonAddOns()
  |     {
  |             Query q = this.em.createQuery("select p from Product p where 
p.addOn = false");
  |             return q.getResultList();
  |     }
  | 

...I get exactly what I expect...

What I want is to get all categories & products but I want the products 
excluded where the isAddOn field = false (MSSQL bit field).

What am I doing wrong?

Thanks!

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3934888


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to