java - Hibernate 在公式注释中使用对象的属性字段

标签 java hibernate

我对 hibernate 相当陌生,我遇到了一个问题,我试图用非常基本的代码来克服这个问题,只是为了让它能够工作。这是我所拥有的:

@Entity
@Table(name="budgetfunds")
public class BudgetItem implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="budgetFundsID")
    private int budgetFundID;

    @Column(name="budgetYear")
    private int budgetYear;

    @ManyToOne
    @JoinColumn(name = "semesterID")
    private Semester semester;

    @ManyToOne
    @JoinColumn(name = "fundCategoryID")
    private FundCategory fundCategory;

    @OneToMany
    @JoinColumns({
        @JoinColumn(name = "fundCategoryID", referencedColumnName = "fundCategoryID"),
        @JoinColumn(name = "semesterID", referencedColumnName = "semesterID"),
        @JoinColumn(name = "year", referencedColumnName = "budgetYear")
    })
    private Set<Fund> fundItems;

    @Column(name="budgetID")
    private int budgetID;

    @Column(name="budgetFundAmount")
    private BigDecimal fundAmount;

    @Formula(value = "select sum(f.fundAmount) from Fund f where f.fundCategoryID = fundCategoryID and f.semesterID = semesterID and f.year = budgetYear")
    private BigDecimal requestedAmount;

    ...
}

这是我的问题。我有一组fundItems,我需要将其求和并设置为该对象的属性,以便可以在jsp 中引用它。最后一个属性是我尝试这样做的...唯一的问题是,它不是有效的 sql,因为它不知道 seasonID、budgetYear 和fundCategoryID 值来自何处。有没有办法修复此查询以每个对象工作?

此外,如果有一种更简单的方法可以在不完全重构代码/数据库的情况下完成此操作,请告诉我。

这是数据库和关系的图表: enter image description here

最佳答案

到处搜索后,我终于找到了某人关于hibernate使用“派生属性”的教程。
来源如下:

http://blog.eyallupu.com/2009/07/hibernate-derived-properties.html

这是我的问题的具体解决方案:

@Formula(value = "(select sum(f.fundAmount) from Fund f " + 
    "where f.fundCategoryID = fundCategoryID " +
    "and f.semesterID = semesterID "+
    "and f.year = budgetYear)")
private BigDecimal requestedAmount;

为了解释这是如何工作的,我将引用上面链接中的一段内容:

...by not declaring an alias on a column (the [fundCategoryID, semesterID, and budgetYear] columns in here), I can reference the owning entity columns - this is usually required when my formula needs to fetch associated entities...

关于java - Hibernate 在公式注释中使用对象的属性字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504700/

相关文章:

java - 我应该使用什么布局管理器?

java - 如何使用基于 REST 的应用程序实现在线/离线功能?

java - MVC 井字游戏

java - 如何将 JLabel 放在矩形内

java - Hibernate外键为主键

Java-在消费者等待并且tomcat关闭时停止线程

hibernate - 将 liquibase 与 Spring JPA/Hibernate 一起使用的正确方法?

java - JPA和Hibernate注解的关系

java - org.hibernate.exception.SQLGrammarException : hibernate will not join column

spring - 使用Hibernate 4.2和Spring 3.1.1设置MultiTenantConnectionProvider