在子类中休眠where子句继承



我有很多从抽象类继承的实体,现在我希望在继承这个抽象类的每个实体上执行where子句。问题是where子句不起作用。有人知道解决这个问题的办法吗?我希望childClass自动执行超级类的where子句。

@MappedSuperclass
@Where(clause = "comp= 100")
@Getter @Setter
public abstract class AbstractLiferayEntity {}

@Entity
@Table(name = "Let")
@Getter
public class LiferayLayoutSet extends AbstractLiferayEntity{}

我尝试了这个想法,我想创建一个新的注释,使用where子句并添加继承到其中,但它不起作用

@Target({TYPE})
@Retention(RUNTIME)
@Inherited
@Where(clause = "comp=100")
public @interface WhereClause{
}
@MappedSuperclass
@WhereClause
public abstract class AbstractLiferayEntity {}

//第二次尝试

@Target({TYPE})
@Retention(RUNTIME)
@Inherited
public @interface WhereClause {
Where clause();
}

@MappedSuperclass
@Getter @Setter
@WhereClause(clause = @Where(clause = "comp=100"))
public abstract class AbstractLiferayEntity

是的,这是可能的,但需要一些额外的编码/配置。问题的根本原因是@Where不是继承的,但是HBN确实允许执行一些技巧来实现这一点——我们以前也这样做过:

4类支持功能:

  • PropagateAnnotationReader.java
  • PropagateAnnotations.java
  • PropagateMetadataBuilderFactory.java
  • 传播元数据提供者.java

HBN SPI配置

MappedSuperClass

最新更新