S
Sym
Gast
Hallo,
ich habe ein Problem, welches ich nicht verstehe. Ich habe eine Entität:
Ich möchte nun eine Criteria bauen, die mit alle Subprodukte zu einem Parent sucht.
Dazu habe ich folgendes
Damit bekomme ich immer eine leere Liste.
Wenn ich aber die Condition durch
ersetze bekomme ich die Produkte für die Owner. Muss ich da etwas besonderes beachten, weil ich mich auf der gleichen Entität bewege? Oder wo ist mein Denkfehler?
ich habe ein Problem, welches ich nicht verstehe. Ich habe eine Entität:
Java:
@Entity
public class ProductEntity extends AbstractBaseEntity {
...
@ManyToOne
private UserEntity owner;
...
@ManyToOne(fetch = FetchType.LAZY)
private ProductEntity parent;
}
Ich möchte nun eine Criteria bauen, die mit alle Subprodukte zu einem Parent sucht.
Dazu habe ich folgendes
Java:
final CriteriaBuilder builder = this.entityManager.getCriteriaBuilder();
final CriteriaQuery<ProductEntity> query = builder.createQuery(ProductEntity.class);
final Root<ProductEntity> root = query.from(ProductEntity.class);
final Predicate condition = builder.equal(root.get(ProductEntity.parent), parent);
query.select(root).where(condition);
final TypedQuery<ProductEntity> q = this.entityManager.createQuery(query);
return q.getResultList();
Damit bekomme ich immer eine leere Liste.
Wenn ich aber die Condition durch
Java:
final Predicate condition = builder.equal(root.get(ProductEntity.owner), parent.getOwner());
ersetze bekomme ich die Produkte für die Owner. Muss ich da etwas besonderes beachten, weil ich mich auf der gleichen Entität bewege? Oder wo ist mein Denkfehler?