// Path: micro-core/src/main/java/sample/context/orm/Sort.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// public static class SortOrder implements Serializable {
//     private static final long serialVersionUID = 1L;
//     private String property;
//     private boolean ascending;
// 
//     public static SortOrder asc(String property) {
//         return new SortOrder(property, true);
//     }
// 
//     public static SortOrder desc(String property) {
//         return new SortOrder(property, false);
//     }
// }


import java.time.*;
import java.util.*;
import java.util.function.Function;
import javax.persistence.EntityManager;
import javax.persistence.criteria.*;
import javax.persistence.metamodel.Metamodel;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.MatchMode;
import sample.context.orm.Sort.SortOrder;
    public <Y extends Comparable<? super Y>> OrmCriteria<T> gt(String field, final Y value) {
        if (isValid(value)) {
            add(builder.greaterThan(root.get(field), value));
        }
        return this;
    }

    /** [フィールド]&lt;=[値] 条件を付与します。 */
    public <Y extends Comparable<? super Y>> OrmCriteria<T> lte(String field, final Y value) {
        if (isValid(value)) {
            add(builder.lessThanOrEqualTo(root.get(field), value));
        }
        return this;
    }

    /** [フィールド]&lt;[値] 条件を付与します。 */
    public <Y extends Comparable<? super Y>>  OrmCriteria<T> lt(String field, final Y value) {
        if (isValid(value)) {
            add(builder.lessThan(root.get(field), value));
        }
        return this;
    }

    /** ソート条件を加えます。 */
    public OrmCriteria<T> sort(Sort sort) {
        sort.getOrders().forEach(this::sort);
        return this;
    }
    
    /** ソート条件を加えます。 */
// Path: micro-core/src/main/java/sample/context/orm/Sort.java
// @Data
// @NoArgsConstructor
// @AllArgsConstructor
// public static class SortOrder implements Serializable {
//     private static final long serialVersionUID = 1L;
//     private String property;
//     private boolean ascending;
// 
//     public static SortOrder asc(String property) {
//         return new SortOrder(property, true);
//     }
// 
//     public static SortOrder desc(String property) {
//         return new SortOrder(property, false);
//     }
// }


// Path: micro-core/src/main/java/sample/context/orm/OrmCriteria.java
import java.time.*;
import java.util.*;
import java.util.function.Function;
import javax.persistence.EntityManager;
import javax.persistence.criteria.*;
import javax.persistence.metamodel.Metamodel;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.criterion.MatchMode;
import sample.context.orm.Sort.SortOrder;

    public <Y extends Comparable<? super Y>> OrmCriteria<T> gt(String field, final Y value) {
        if (isValid(value)) {
            add(builder.greaterThan(root.get(field), value));
        }
        return this;
    }

    /** [フィールド]&lt;=[値] 条件を付与します。 */
    public <Y extends Comparable<? super Y>> OrmCriteria<T> lte(String field, final Y value) {
        if (isValid(value)) {
            add(builder.lessThanOrEqualTo(root.get(field), value));
        }
        return this;
    }

    /** [フィールド]&lt;[値] 条件を付与します。 */
    public <Y extends Comparable<? super Y>>  OrmCriteria<T> lt(String field, final Y value) {
        if (isValid(value)) {
            add(builder.lessThan(root.get(field), value));
        }
        return this;
    }

    /** ソート条件を加えます。 */
    public OrmCriteria<T> sort(Sort sort) {
        sort.getOrders().forEach(this::sort);
        return this;
    }
    
    /** ソート条件を加えます。 */
    public OrmCriteria<T> sort(SortOrder order) {