@MappedSuperclass
@EntityListeners({PersistenceListener.class})
public abstract class ListenedEntity implements java.io.Serializable {
protected Date createTime;
protected Date updateTime;
protected boolean delFlag = false;
}
@Entity
@Table(name = "balance")
@Inheritance(strategy = InheritanceType.JOINED)
public class Balance extends ListenedEntity {
protected Integer id;
protected Product product;
protected BigDecimal amount;
protected String remark;
}
@Entity
@Table(name = "debt_balance")
public class DebtBalance extends Balance {
}
@MappedSuperclass
public abstract class BalanceDetail extends ListenedEntity {
protected String remark;
protected Constants.OPERATION_TYPE operationType;
}
@Entity
@Table(name = "debt_balance_details")
public class DebtBalanceDetail extends BalanceDetail {
}
String jpql = "select new DebtBalance(d.productType, sum(case when d.operationType = com.geewit.ems.business.Constants$OPERATION_TYPE.增持 then d.amount when d.operationType = com.geewit.ems.business.Constants$OPERATION_TYPE.减持 then -d.amount end)) from DebtBalanceDetail d group by d.productType";
Query query = entityManager.createQuery(jpql);