【发布时间】:2017-08-18 22:21:50
【问题描述】:
我有一个 java 域类,它为数据库中的一个表建模,我有两个字段 双倍预算1 双倍预算 2 我需要在类中添加另一个字段作为成员变量 double totalBudget 是budget1 和budget2 的一部分,我如何在java8 中做到这一点?
@Formula("(SELECT SUM(c.budget1) FROM table1)
private Double budget1;
@Formula("(SELECT SUM(c.budget2) FROM table2)
private Double budget2;
@Transient
private Double totalBudget = budget1 + budget2;
这给了我一个错误
【问题讨论】:
-
这段代码给你的错误是什么?
-
引起:org.hibernate.InstantiationException:无法实例化测试对象
-
你确定你真的需要那个字段吗?我会使用一种返回它们的总和的方法。请记住,每次更改
budget1或budget2时,您都应该更新totalBudget -
@Kanub,请添加完整的堆栈跟踪
-
你不想这样做。 (1) 你应该在数据库中使用
BigDecimal,而不是Double,用于金钱和DECIMAL; (2) 您不想要一个可以从其他字段推断出其值的字段。您只需要一个返回值总和的字段的 getter。否则 (3) 如果对象是不可变的,您希望在获取这些值的 SQL 语句中计算总和。