Java Hibernate:意外标记:以及在比较日期时

Java Hibernate:意外标记:以及在比较日期时,java,hibernate,hql,Java,Hibernate,Hql,我通过比较映射为java.util.Date的两个datetime列“start”和“end”,获取两个日期之间的所有插槽 错误 unexpected token: end near line 1, column 74 [From com.booking.tokbox.domain.Slot where ownerid = ? and start >= ? and end <= ?] 我猜,end是SQL中受保护的关键字。 重命名字段或使用别名(插槽s=>s.end) 例如:我

我通过比较映射为java.util.Date的两个datetime列“start”和“end”,获取两个日期之间的所有插槽

错误

unexpected token: end near line 1, column 74 [From 
com.booking.tokbox.domain.Slot where 
ownerid = ? and start >= ? and end <= ?]

我猜,end是SQL中受保护的关键字。 重命名字段或使用别名(插槽s=>s.end)


例如:

我猜是end是SQL中受保护的关键字。 重命名字段或使用别名(插槽s=>s.end)


例如:

end
是SQL中的一个关键字,您不能使用它。请重命名它

end
是SQL中的一个关键字,您不能使用它。请重命名它

如果您为实体别名(并使用select子句使其符合JPA),会发生什么情况:
从slot slot中选择slot,其中slot.ownerid=?和slot.start>=?和slot.end如果您为实体别名(并使用select子句使其符合JPA),会发生什么情况:
从slot slot中选择slot,其中slot.ownerid=?和slot.start>=?和插槽。结束
public List<Slot> fetchSlots(Session session,int ownerid,String start,String end) throws ParseException{
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date startDate = dateFormat.parse(start);
    Date endDate = dateFormat.parse(end);
    List<Slot> slots = null;
    Query query = session.createQuery("From Slot where ownerid = ? and start >= ? and end <= ?").setParameter(0,ownerid)
            .setParameter(1, startDate).setParameter(2,endDate);
    slots = query.list();
    if(slots.size() > 0)
        return slots;
    return null;
}
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

@Entity
@Table(name="SLOT")
public class Slot {

    public Slot(){

    }

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="slotid")
    private Integer id;

    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="ownerid",insertable = false, updatable = false)
    private User user;

    @Column(name="start")
    private Date start;

    @Column(name="end")
    private Date end;

    @Column(name="status")
    private String status;

    private Integer ownerid;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created", nullable = false, updatable=false)
    @Version
    private Date created;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public User getUser() {
        return this.user;
    }

    public void setUser(User owner) {
        this.user = owner;
    }


    public void setStart(Date start) {
        this.start = start;
    }

    public Date getEnd() {
        return end;
    }

    public void setEnd(Date end) {
        this.end = end;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Integer getOwnerid() {
        return ownerid;
    }

    public void setOwnerid(Integer ownerid) {
        this.ownerid = ownerid;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public Date getStart() {
        return start;
    }



}