【发布时间】:2018-08-14 10:07:23
【问题描述】:
我有一个实体类如下。
@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 一起加入。在这里,我只需要日期检查,而不是日期时间检查。所以我在@where 子句中添加了CAST。
但是在获取所有结果时添加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)
ON 子句中的 DATE 关键字前面带有表别名,它会破坏查询。
有什么办法可以避免吗?
【问题讨论】:
-
我只是在这里猜测,但您可以尝试将 Date 括在方括号中:[Date] 吗?
-
@Dimitri- 已经尝试过了,但它不起作用。我得到它是
uc.[DATE] -
尝试以下操作:uc."DATE"
-
它被转换为
CAST(uc.START_DATE AS 'DATE')。那里没有表别名,语法仍然不正确
标签: sql-server hibernate date orm