Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 Hibernate InheritanceType.JOINED条件投影和_Java_Postgresql_Hibernate_Inheritance_Criteria - Fatal编程技术网

Java Hibernate InheritanceType.JOINED条件投影和

Java Hibernate InheritanceType.JOINED条件投影和,java,postgresql,hibernate,inheritance,criteria,Java,Postgresql,Hibernate,Inheritance,Criteria,我正在尝试使用Hibernate继承对来自多个子类的simular表上的值求和 在我的父类上使用“@heritance(strategy=InheritanceType.JOINED)”,并有多个子类扩展它。我的问题是,当我使用带有“Projections.sum”的条件来获得结果时,Hibernate执行了一个有趣的连接 就好像hibernate获取第一个匹配结果并对其进行求和一样——忽略其余部分,我甚至不确定这是否可以完成 希望我下面的代码能澄清我的问题 动物-父类 @Entity @Inh

我正在尝试使用Hibernate继承对来自多个子类的simular表上的值求和

在我的父类上使用“@heritance(strategy=InheritanceType.JOINED)”,并有多个子类扩展它。我的问题是,当我使用带有“Projections.sum”的条件来获得结果时,Hibernate执行了一个有趣的连接

就好像hibernate获取第一个匹配结果并对其进行求和一样——忽略其余部分,我甚至不确定这是否可以完成

希望我下面的代码能澄清我的问题

动物-父类

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public class Animals extends BaseObject{

    private Long animalId;
    private Long weight;
@Entity
@Table(name = "cats")
@PrimaryKeyJoinColumn(name="animal_id")
public class Cats extends Animals{

    private Long offspring;
    private String color;
@Entity
@Table(name = "dogs")
@PrimaryKeyJoinColumn(name="animal_id")
public class Dogs extends Animals{

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "birds")
@PrimaryKeyJoinColumn(name="animal_id")
public class Birds extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "fish")
@PrimaryKeyJoinColumn(name="animal_id")
public class Fish extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
猫-儿童班

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public class Animals extends BaseObject{

    private Long animalId;
    private Long weight;
@Entity
@Table(name = "cats")
@PrimaryKeyJoinColumn(name="animal_id")
public class Cats extends Animals{

    private Long offspring;
    private String color;
@Entity
@Table(name = "dogs")
@PrimaryKeyJoinColumn(name="animal_id")
public class Dogs extends Animals{

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "birds")
@PrimaryKeyJoinColumn(name="animal_id")
public class Birds extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "fish")
@PrimaryKeyJoinColumn(name="animal_id")
public class Fish extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
狗-儿童班

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public class Animals extends BaseObject{

    private Long animalId;
    private Long weight;
@Entity
@Table(name = "cats")
@PrimaryKeyJoinColumn(name="animal_id")
public class Cats extends Animals{

    private Long offspring;
    private String color;
@Entity
@Table(name = "dogs")
@PrimaryKeyJoinColumn(name="animal_id")
public class Dogs extends Animals{

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "birds")
@PrimaryKeyJoinColumn(name="animal_id")
public class Birds extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "fish")
@PrimaryKeyJoinColumn(name="animal_id")
public class Fish extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
鸟类-儿童班

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public class Animals extends BaseObject{

    private Long animalId;
    private Long weight;
@Entity
@Table(name = "cats")
@PrimaryKeyJoinColumn(name="animal_id")
public class Cats extends Animals{

    private Long offspring;
    private String color;
@Entity
@Table(name = "dogs")
@PrimaryKeyJoinColumn(name="animal_id")
public class Dogs extends Animals{

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "birds")
@PrimaryKeyJoinColumn(name="animal_id")
public class Birds extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "fish")
@PrimaryKeyJoinColumn(name="animal_id")
public class Fish extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
鱼-子类

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "animals")
public class Animals extends BaseObject{

    private Long animalId;
    private Long weight;
@Entity
@Table(name = "cats")
@PrimaryKeyJoinColumn(name="animal_id")
public class Cats extends Animals{

    private Long offspring;
    private String color;
@Entity
@Table(name = "dogs")
@PrimaryKeyJoinColumn(name="animal_id")
public class Dogs extends Animals{

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "birds")
@PrimaryKeyJoinColumn(name="animal_id")
public class Birds extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
@Entity
@Table(name = "fish")
@PrimaryKeyJoinColumn(name="animal_id")
public class Fish extends Animals {

    private Long offspring;
    private String color;
    private int eggsLayed;
条件查询

    ProjectionList projList = Projections.projectionList()
            .add(Projections.sum("eggsLayed"));

    Criteria crit = getSession()
            .createCriteria(Animals.class)
            .setProjection(projList);
运行查询时的相关SQL输出:

Hibernate: 
    select
        sum(this_3_.eggs_layed) as y0_ 
    from
        animals this_ 
    left outer join
        cats this_1_ 
            on this_.animal_id=this_1_.animal_id 
    left outer join
        dogs this_2_ 
            on this_.animal_id=this_2_.animal_id 
    left outer join
        birds this_3_ 
            on this_.animal_id=this_3_.animal_id 
    left outer join
        fish this_4_ 
            on this_.animal_id=this_4_.animal_id
任何反馈都将不胜感激