Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 条件-按getter选择_Java_Hibernate_Interface_Criteria - Fatal编程技术网

Java 条件-按getter选择

Java 条件-按getter选择,java,hibernate,interface,criteria,Java,Hibernate,Interface,Criteria,我有一个接口来获取名称可以不同的列的值 public interface IInterface { Integer getValue(); } class A implements IInterface{ private Integer someValue; public Integer getValue(){ return someValue; } } class B implements IInterface{ private

我有一个接口来获取名称可以不同的列的值

public interface IInterface {

    Integer getValue();
}

class A implements IInterface{
    private Integer someValue;

    public Integer getValue(){
        return someValue;
    }
}

class B implements IInterface{
    private Integer valueAlias;

    public Integer getValue(){
        return valueAlias;
    }
}
在抽象类中,我希望选择具有最高值的实体,但我没有显式的列名。 有可能解决这个问题吗

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<IInterface> cq = cb.createQuery(IInterface.class);
Root<IInterface> root = cq.from(IInterface.class);
cq.select(cb.max(/* getValue() */));

每个实体或表都需要自己的实现,但您当然可以让它们都实现相同的接口

使用CriteriaBuilder,您需要使用实现类分别查询每个实体。在原始问题中引用接口将不起作用

@Entity
@Table(name = "TABLE_A")
class A implements IInterface, Serializable {

    @Column(name = "SOME_COL")
    private Integer someValue;

    public Integer getValue(){
        return someValue;
    }
}

@Entity
@Table(name = "TABLE_B")
class B implements IInterface, Serializable {

    @Column(name = "SOME_OTHER_COL")
    private Integer valueAlias;

    public Integer getValue(){
        return valueAlias;
    }
}

每个实体或表都需要自己的实现,但您当然可以让它们都实现相同的接口

使用CriteriaBuilder,您需要使用实现类分别查询每个实体。在原始问题中引用接口将不起作用

@Entity
@Table(name = "TABLE_A")
class A implements IInterface, Serializable {

    @Column(name = "SOME_COL")
    private Integer someValue;

    public Integer getValue(){
        return someValue;
    }
}

@Entity
@Table(name = "TABLE_B")
class B implements IInterface, Serializable {

    @Column(name = "SOME_OTHER_COL")
    private Integer valueAlias;

    public Integer getValue(){
        return valueAlias;
    }
}