1

Is there an Eclipselink alternative to Hibernate @where annotation ? I have my Entity class in Hibernate

@Table(name = "entity_definition")
public class EntityDefinition implements Serializable {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
  @Id
  @Column(name = "\"entity_id\"", nullable = false)
  private Integer entityId;

  @OneToMany(mappedBy = "entityId", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  @Where(clause = "ep_exp_dt >= now()")
  private Set<EntityProvider> entityProvider;

or how can I do it with CriteriaBuilder

        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<EntityDefinition> cq = cb.createQuery(EntityDefinition.class);   
        Root<EntityDefinition> ed = cq.from(EntityDefinition.class);       

        ParameterExpression<Date> paramCurrentDate = cb.parameter(Date.class);
        final Predicate predicateEDCurrDate = cb.greaterThanOrEqualTo(ed.get("edExpDt"), paramCurrentDate);

        ParameterExpression<String> paramEntityName = cb.parameter(String.class);
        final Predicate predicateEntityName = cb.equal(ed.get("entityNm"), paramEntityName);

        cq.select(ed).where(cb.and(predicateEntityName, predicateEDCurrDate));
        TypedQuery<EntityDefinition> tQuery = entityManager.createQuery( cq );
        tQuery.setParameter( paramEntityName, entityNm.toUpperCase() );
        tQuery.setParameter( paramCurrentDate, Date.valueOf(LocalDate.now()));
        
        return tQuery.getSingleResult();

Appreciate any help.

Raj

funtoos
  • 295
  • 1
  • 4
  • 17
  • Not familiar with hibernate, but looks the same/similar to what is asked for in https://stackoverflow.com/a/41880652/496099 answer there applies here too. – Chris Jul 10 '20 at 22:24

1 Answers1

0

you can use

@org.eclipse.persistence.annotations.AdditionalCriteria

@Entity @AdditionalCriteria("isActive='false'") 
public class Product { //... @Column private Boolean isActive; }

https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/annotations_ref.htm#additionalcriteria

more details: How do I "filter" queries (where clause) on an entity by default?

General Grievance
  • 4,555
  • 31
  • 31
  • 45
vyona
  • 1