Hibernate adnotacje problem z @NamedQuery

0

witam

mam takie tabelki :
user image

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

0

Możesz użyć native query. Inną metodą jest pobranie category i z category listy definition. Jest łatwiej.
Definition d From Definition where CategoryId=3; próbowałeś tego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1