Почему этот запрос не работает?Hibernate JOIN запрос не работает: Java/JSP с Hibernate, IDE Netbeans/GlassFish, Windows 10
query = "SELECT itm.itemId, itm.itemModel, itm.itemDescription, "
+ " itmImages.imageFileName, part.participant_id "
+ " FROM Users user "
+ " INNER JOIN user.participant part "
+ " INNER JOIN part.addresses addr "
+ " INNER JOIN part.item itm "
+ " INNER JOIN itm.itemImages itmImages "
+ " WHERE user.userType LIKE '%borrow%') AND itm.itemDescription LIKE '%mower%') AND addr.addressType = 'primary'";
Он всегда возвращает все элементы, пренебрегает itemDescription LIKE ... Я проверил базу данных и все присоединиться к идентификаторам отлично
Это работает:
query = "SELECT user"
+ " FROM Users user "
+ " INNER JOIN user.participant part "
+ " INNER JOIN part.addresses addr "
+ " WHERE user.userType LIKE '%borrow%') AND addr.addressType = 'primary'";
У меня есть таблица пользователей , Он имеет связь «один-ко-многим» с табличным участником.
В Users.java у меня есть ..
private Set<Participant> participant = new HashSet<Participant>();
с
@OneToMany
@JoinTable(name = "echomarket.hibernate.Participant")
@JoinColumn(name = "user_id")
public Set<Participant> getParticipant() {
return participant;
}
public void setParticipant(Set<Participant> participant) {
this.participant = participant;
}
Это присоединиться отлично работает.
В Participant.java У меня есть
private Set<Addresses> addresses = new HashSet<Addresses>();
с
@OneToMany
@JoinTable(name = "echomarket.hibernate.Addresses")
@JoinColumn(name = "participant_id")
public Set<Addresses> getAddresses() {
return addresses;
}
public void setAddresses(Set<Addresses> addresses) {
this.addresses = addresses;
}
И частный Устанавливаемая = новый HashSet();
С
@OneToMany
@JoinTable(name = "echomarket.hibernate.Items")
@JoinColumn(name = "participant_id")
public Set<Items> getItem() {
return item;
}
Нет ассоциации заявление в отношении пользователей.
В Addresses.java не создаю ассоциаций.
В Items.java У меня есть
private Set<ItemImages> itemImages = new HashSet<ItemImages>();
с
@OneToMany
@JoinTable(name = "echomarket.hibernate.ItemImages")
@JoinColumn(name = "itemId")
public Set<ItemImages> getItemImages() {
return itemImages;
}
public void setItemImages(Set<ItemImages> itemImages) {
this.itemImages = itemImages;
}
В ItemImages.java я не делаю никаких ассоциаций ...
Очень спасибо за вашу помощь. Если вам нужна дополнительная информация, пожалуйста, просто спросить ...
Лиз
Кстати, только что попробовали GROUP BY на все поля, извлекаемых, по-прежнему возвращают слишком много записей. – emm
как вы используете свой запрос? – degr
В managedBean. – emm