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'