Module jakarta.data

Package jakarta.data.metamodel


package jakarta.data.metamodel

A static metamodel for entities that are used in Jakarta Data repositories.

The StaticMetamodel allows for type-safe operations that avoid the need to hard-code entity attribute names as Strings. For example,

 @Entity
 public class Product {
     @Id
     public long id;

     public String name;

     public float price;

     public LocalDate producedOn;
 }

 @StaticMetamodel(Product.class)
 public interface _Product {
     String ID = "id";
     String NAME = "name";
     String PRICE = "price";
     String PRODUCEDON = "producedOn";

     NumericAttribute<Product,Long> id = NumericAttribute.of(
             Product.class, ID, long.class);
     TextAttribute<Product> name = TextAttribute.of(
             Product.class, NAME);
     NumericAttribute<Product,Float> price = NumericAttribute.of(
             Product.class, PRICE, float.class);
     TemporalAttribute<Product,LocalDate> producedOn = TemporalAttribute.of(
             Product.class, PRODUCEDON, LocalDate.class);
 }

 ...

 @Repository
 Products products;

 ...

 Order<Product> order =
         Order.by(_Product.price.desc(),
                  _Product.name.asc(),
                  _Product.id.asc());

 page1 = products.findByNameLike(namePattern, pageRequest);
 

The module Javadoc provides an overview of Jakarta Data.