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