[jboss-user] [EJB 3.0] - Problem in mapping a many to many relation to a list

elenh do-not-reply at jboss.com
Fri Oct 27 08:25:50 EDT 2006


Hi,

I have a problem with mapping a many to many relation to a list.

I have a Many to Many relation in my database between tables baskets and products. This relation is implemented with a join table basket_products, which has two fields which correspond to the foreign keys to tables baskets and products. The join table need to have another one column "order", which defines the order of the products for the specific basket.

In my mapping I have:


  | 
  | @Entity
  | @Table(name = "baskets", uniqueConstraints = {})
  | public class Components implements java.io.Serializable {
  | 
  | @ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
  | 	@JoinTable( name="baskets_products",
  | 					joinColumns=@JoinColumn(name="b_id", referencedColumnName="pr_id"),
  | 					inverseJoinColumns=@JoinColumn(name="pr_id", referencedColumnName="pr_id"))
  | 
  |         //This of course doesn't work!!
  |        //@OrderBy(value="order")
  | 
  | 	public List<Products> getProductses() {
  | 		return this.productses;
  | 	}
  | 
  | 	public void setProductses(
  | 			List<Products> productses) {
  | 		this.productses = productses;
  | 	}
  | 
  | 
  | 
  | @Entity
  | @Table(name = "products", uniqueConstraints = { })
  | public class Products implements java.io.Serializable {
  | 
  | @ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "productses")
  | 	public Set<Baskets> getBasketses() {
  | 		return this.basketses;
  | 	}
  | 
  | 	public void setBasketses(Set<Basket> basketses) {
  | 		this.basketses = basketses;
  | 	}
  | 
  | 
  | 



In the EJB spec I read that :

"The property or field name must correspond to that of a persistent property or field of the associated
class."


What to do if I want to use a field from the join table to do the ordering of the list??
My problem is that the field "order", is not defined to the EJB container as a persistent field, so it cannot be used. But for my needs it is necessary that this field is included in the join table.

I thought that I could use the secondary table annotation to map the join table to the Baskets class, as well, so that I can define the order field, but this solution seems to me as a really wrong one.


Can anyone help me??

Thanks,
Elenh.

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

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



More information about the jboss-user mailing list