Hibernate adnotacje problem z @NamedQuery

Hibernate adnotacje problem z @NamedQuery
H7
  • Rejestracja: dni
  • Ostatnio: dni
0

witam

mam takie tabelki :
user image

oraz adnotacje do nich:

Kopiuj
@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

}
Kopiuj
@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:

Kopiuj
select * from Definition where Id in (select DefinitionId from XCategoryDefinition where CategoryId=3);

z gory dzieki za wszelkia pomoc

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.