我有一个示例代码片段-

@Entity
@Table(name = "employee")
@Where(clause = "active IS TRUE")
public class Employee{
}

这将获取具有active = true或1的employee表的所有记录。在某些情况下,可能要求我要加载具有active = false或0的记录。

如果我将代码写为FROM Employee emp WHERE emp.active IS FALSE,但生成的查询包含bot,则其条件将在HQL和Annotations中给出。

因此,预期结果不会到来。无论如何,有否要覆盖在实体上定义的预定义@Where

最佳答案

AFAIK不能在您的类中覆盖它,因为如果您查看 @Where documentation ,您会看到此接口(interface)带有@Retention(value=RUNTIME)注释,因此它具有RUNTIME作为RetentionPolicy,并且您可以在 RetentionPolicy documentation 中看到:



这迫使@Where批注由编译器记录在类文件中,并在运行时由VM保留,因此它将在整个此类中应用。

07-28 03:33
查看更多