Java hibernate查询按其他表中的条件查找
这是原始查询:Java hibernate查询按其他表中的条件查找,java,hibernate,Java,Hibernate,这是原始查询: public List<Ride> listRides(Long userId) { List<Ride> ride = Collections.EMPTY_LIST; ride = getHibernateTemplate() .find("from Ride v where v.userId = ? AND finished = true AND isDeleted = f
public List<Ride> listRides(Long userId) {
List<Ride> ride = Collections.EMPTY_LIST;
ride = getHibernateTemplate()
.find("from Ride v where v.userId = ? AND finished = true AND isDeleted = false order by startTime DESC",
userId);
return ride.size() > 0 ? ride : Collections.EMPTY_LIST;
}
RidePrivacy表:
id bigint NOT NULL DEFAULT nextval('hd_rides_privacy_id_seq'::regclass),
ride_id bigint,
is_visible boolean
我将此添加到Ride类中:
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "RidesPrivacy", joinColumns = @JoinColumn(name = "id") , inverseJoinColumns = @JoinColumn(name = "ride_id") )
并将dao实现重新设计为:
public List<Ride> listRides(Long userId) {
List<Ride> ride = Collections.EMPTY_LIST;
StringBuilder query = new StringBuilder();
query.append("from Ride v where v.userId = ? AND finished = true");
query.append("AND Ride.RidesPrivacy.isVisible= true ");
query.append("AND isDeleted = false order by startTime DESC");
ride = getHibernateTemplate().find(query.toString(), userId);
return ride.size() > 0 ? ride : Collections.EMPTY_LIST;
}
请尝试v.RidesPrivacy.isvisiblewho is_visible映射?在RidesPrivacy类中:@Column(name=“is_visible”)private Boolean isVisible;当我试着用v。我得到:无法解析属性:RidesPrivacy我认为您应该在Ride类中添加RidePrivacy字段(或属性)
public List<Ride> listRides(Long userId) {
List<Ride> ride = Collections.EMPTY_LIST;
StringBuilder query = new StringBuilder();
query.append("from Ride v where v.userId = ? AND finished = true");
query.append("AND Ride.RidesPrivacy.isVisible= true ");
query.append("AND isDeleted = false order by startTime DESC");
ride = getHibernateTemplate().find(query.toString(), userId);
return ride.size() > 0 ? ride : Collections.EMPTY_LIST;
}
org.springframework.orm.hibernate3.HibernateQueryException: Invalid path: 'null.RidesPrivacy.isVisible'