我有一个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
关键字前面带有表别名,它破坏了查询。
有什么办法可以避免吗?
答案 0 :(得分:0)
您无需在此处指定AS关键字 只需在以下位置更改您的@Where
@Where(clause = "CAST(START_DATE) <= CAST(getDate())")