从Entity for Hibernate中的@where子句转义关键字

时间:2018-08-14 10:07:24

标签: sql-server hibernate date orm

我有一个Entity类,如下所示。

@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的实体一起加入。在这里,我只需要日期检查,而不是日期时间检查。因此,我在CAST子句中添加了@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子句中的ON关键字前面带有表别名,它破坏了查询。

有什么办法可以避免吗?

1 个答案:

答案 0 :(得分:0)

您无需在此处指定AS关键字 只需在以下位置更改您的@Where

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