anchor.diff:  
   An easy way to read data from our database is by creating a ‘dynamic query’ with use of the Java Persistance API (JPA) query language, a string-based query language. To find a `User` by username we would write something like:
   
  -[source, scala]
  +[source, java]
   ----
   try {
       return JPA.em()
  
positive.code: 
  If we want to find the `User` with help of the Criteria API it becomes this piece of code:
  
  {% highlight java %}
  try {
      CriteriaBuilder cb = JPA.em().getCriteriaBuilder();
      CriteriaQuery&lt;User&gt; query = cb.createQuery(User.class);
  
negative.code: 
  A metamodel class is a class that represents the datastructure of the corresponding model class. For example, this model class:
  
  [source, java]
  ----
  @Entity
  public class User {
      public Long id;
      public String username;
  }
  ----
  
  Would have the following metamodel class:
  
  [source, java]
  ----
  @StaticMetamodel(User.class)
  public abstract class User_ {
      public static volatile SingularAttribute&lt;User, String&gt; username;
  }
  ----
  
  Now we are able to create a type-safe query:
  
  [source, java]
  ----
  try {
      CriteriaBuilder cb = JPA.em().getCriteriaBuilder();
      CriteriaQuery&lt;User&gt; query = cb.createQuery(User.class);
  