首页 > 解决方案 > 从 Entity for Hibernate 中的 @where 子句中转义关键字

问题描述

我有一个实体类,如下所示。

@Entity
@Table(name = "user_MAIN" )
public class userDetails implements Serializable {

    @Id
    @Column(name = "user_ID")
    private int userId;

    @OneToMany
    @JoinColumn(name = "user_ID", insertable = false, updatable = false)
    @Where(clause = "CAST(START_DATE AS DATE) <= CAST(getDate() AS DATE)")
    private Set<userContractBasic> userContract=new HashSet<userContractBasic>();

}

我想将其userContractBasic与具有 where 条件的实体一起加入START_DATE > current_date。在这里,我只需要日期检查,而不是日期时间检查。所以我添加了CASTin@where子句。
但是在CAST获取所有结果的同时添加查询后:

SELECT  <fields>
FROM user_main um
LEFT OUTER JOIN user_contract uc ON um.user_id=uc.user_id
AND CAST(uc.START_DATE AS uc.DATE) <= CAST(getDate() AS uc.DATE)  

DATE关键字 in子句前面ON带有表别名及其中断查询。

有什么办法可以避免吗?

标签: sql-serverhibernatedateorm

解决方案


您无需在此处指定 AS 关键字,只需更改您的 @Where 即可

@Where(clause = "CAST(START_DATE) <= CAST(getDate())")

推荐阅读