witam
mam takie tabelki :
oraz adnotacje do nich:
@Entity
@NamedQueries({
tu chce dodac namedQuery
})
@Table(name="Definition")
public class Definition {
private int id;
private User authorUser;
private String name;
private List<User> users=new ArrayList<User>();
private List<DefinitionVersion> definitionVersions=new ArrayList<DefinitionVersion>();
private List<Category> categories=new ArrayList<Category>();
private int lastDefinitionVersion;
@ManyToMany(targetEntity=hibernate.mappings.Category.class,cascade=CascadeType.ALL)
@JoinTable(name="XCategoryDefinition",
joinColumns=@JoinColumn(name="DefinitionId"),
inverseJoinColumns=@JoinColumn(name="CategoryId")
)
public List<Category> getCategories() {
return categories;
}
public void setCategories(List<Category> categories) {
this.categories = categories;
}
.. pozosrale gettery i settery
}
@Entity
@NamedQueries({
@NamedQuery(name="getCategoryById",query="from Category where Id=:id"),
@NamedQuery(name="getCategoryByParentId",query="from Category where parentId=:parentId"),
@NamedQuery(name="getCategoryByName",query="from Category where Name=:name"),
@NamedQuery(name="getAllCategories",query="from Category")
})
@Table(name="Category")
public class Category {
private int id;
private int parentId;
private String name;
private String description;
private List<Definition> definitions;
private Timestamp timestamp;
@ManyToMany(targetEntity=hibernate.mappings.Definition.class,cascade=CascadeType.ALL,mappedBy="categories")
public List<Definition> getDefinitions(){
return definitions;
}
public void setDefinitions(List<Definition> definitions){
this.definitions=definitions;
}
... pozostae gettery i settery
}
problem polega na tym, e nie moge napisac @NamedQuery ktory pobiera wszystkie elementy z tabeli Definition po zadanym CategoryId, ktory jest w tabelce laczacej XCategoryDefinition
w sqlu zapytanie takie wyglada tak:
select * from Definition where Id in (select DefinitionId from XCategoryDefinition where CategoryId=3);
z gory dzieki za wszelkia pomoc