hibernate metamodel generator
In this section, you will learn about hibernate metamodel generator.
A new type safe Criteria API is specified by JPA2 which permits structuring criteria queries in a strongly-typed manner by employing metamodel objects to provide type safety. Automated metamodel generation is crucial for developers. Hibernate Static Metamodel Generator is an annotation processor which create JPA 2 static metamodel classes.
Given below example contains two JPA 2 entities Order and Item with the metamodel class Order_ and a typesafe query :
Order Entity
@Entity public class Order { @Id @GeneratedValue Integer id; @ManyToOne Customer customer; @OneToMany Set<Item> items; BigDecimal totalCost; // standard setter/getter methods ... }
Item Entity
@Entity public class Item { @Id @GeneratedValue Integer id; int quantity; @ManyToOne Order order; // standard setter/getter methods ... }
Metamodel class Order_
@StaticMetamodel(Order.class) public class Order_ { public static volatile SingularAttribute<Order, Integer> id; public static volatile SingularAttribute<Order, Customer> customer; public static volatile SetAttribute<Order, Item> items; public static volatile SingularAttribute<Order, BigDecimal> totalCost; }
Typesafe criteria query
CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); SetJoin<Order, Item> itemNode = cq.from(Order.class).join(Order_.items); cq.where( cb.equal(itemNode.get(Item_.id), 5 ) ).distinct(true);