Hello,

J'ai 2 entités Hibernate liés par une relation ManyToMany: Product et Category.

J'aimerais trouver les Products qui ne sont liés à aucune Category en utilisant "DetachedCriteria".

Mes objets sont comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Entity
@Table(name = Product.TABLE_NAME)
public class AbstractProduct{
 
    public static final String TABLE_NAME = "PRODUCT";
 
	@Id
	@AccessType("property")
	@GeneratedValue(generator = "system-uuid")
	@GenericGenerator(name = "system-uuid", strategy = "guid")
	@Column(name = "PRODUCT_ID")
	private String productId;
 
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "PRODUCT_CATEGORY", joinColumns = @JoinColumn(name = "PRODUCT_ID"), inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID"))
	private List<Category> categoryList;	
 
}
 
 
@Entity
@Table(name = Category.TABLE_NAME)
public class Category extends VersionnedEntity {
 
	protected static final String TABLE_NAME = "CATEGORY";
 
	@Id
	@AccessType("property")
	@GeneratedValue(generator = "system-uuid")
	@GenericGenerator(name = "system-uuid", strategy = "guid")
	@Column(name = "CATEGORY_ID")
	private String categoryId;
 
	@ManyToMany(mappedBy = "categoryList", fetch = FetchType.LAZY)
	private List<AbstractProduct> productsList;
}

J'ai essayé ce qui suit mais sans succès:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
public List<Product> findProductWithoutCategory(
			ProductCatalog pProductCatalog) {
 
		DetachedCriteria vProductCriteria = DetachedCriteria
				.forClass(Product.class);
 
		vProductCriteria.createAlias("categoryList", "thealias");
		vProductCriteria.add(Restrictions.isNull("categoryList"));
 
		@SuppressWarnings("unchecked")
		List<Product> products = getHibernateTemplate().findByCriteria(
				vProductCriteria);
		return products;
 
}
Merci d'avance!