【发布时间】:2016-12-28 13:01:58
【问题描述】:
为什么这个查询不起作用?
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...我检查了数据库,所有的连接 id 都很好
这行得通:
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'";
我有一个表用户。它与表 Participant 是一对多的关联。
在 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;
}
并且 私有 Set item = new 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,仍然返回太多记录。
-
你如何使用你的查询?
-
在 managedBean 中。
标签: java hibernate inner-join jointable