【发布时间】:2014-12-07 10:14:45
【问题描述】:
为什么我使用这个命名查询得到语法错误:
@NamedQuery(name = "event_find", query = "from Event where location.address like str('%'+:address+'%') " +
"or :address like str('%'+location.address+'%'")
和:
Query query = session.getNamedQuery("event_find").setParameter("address", address); // or "%"+address+"%"
我该如何解决这个问题?
编辑:
事件:
@NamedQueries({
@NamedQuery(name = "event_find", query = "from Event where location.address like :address " +
"or :address like location.address")
})
@Entity
@Table(catalog = "control_station")
public final class Event implements Serializable {
private long id;
private Location location;
...
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public Location getLocation() {
return location;
}
public void setLocation(Location location) {
this.location = location;
}
...
}
位置:
@Entity
@Table(catalog = "control_station")
public final class Location implements Serializable {
private long id;
private String address;
private double latitude;
private double longitude;
...
}
例如,假设我们在表Location 中有三个地址:
- 西班牙
- 西班牙马德里
- 圣地亚哥伯纳乌球场,马德里,西班牙
现在如果我搜索西班牙马德里,结果必须包含以上所有内容...
即:
西班牙如%Madrid, Spain%或Madrid, Spain如%Spain%
圣地亚哥伯纳乌球场,西班牙马德里,例如 %Madrid, Spain% 或 马德里,西班牙,例如 %Santiago Bernabeu Stadium , 马德里, 西班牙%
等等……
【问题讨论】:
标签: java mysql hibernate hql named-query