我想要一个实体属性,休眠保存到数据库,但在重建对象时不尝试设置。
我有这样的课;
@Entity
class Quote {
private int itemCost;
private int quantity;
public Quote(int itemCost, int quantity) {
this.itemCost = itemCost;
this.quantity = quantity;
}
public void setItemCost(int itemCost) {
this.itemCost = itemCost;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int getItemCost() {
return this.itemCost;
}
public int getQuantity() {
return this.quantity;
}
// This attribute "totalCost" has a getter only, no setter.
// It causes a runtime error (see below).
public int getTotalCost() {
return this.itemCost * this.quantity;
}
}
我想要以下数据库表;
quotes
itemCost | quantity | totalCost
------------------------------------
100 | 7 | 700
10 | 2 | 20
6 | 3 | 18
如您所见,“totalCost”字段可以取自getTotalCost()
,但我不想有一个setTotalCost()
方法,在我的应用程序中它没有任何意义。
我希望将一个字段写入不再存在的数据库的原因是set
,该值可用于共享数据库的其他应用程序(即图形界面)。
显然,在运行时我目前收到此错误:
org.hibernate.PropertyNotFoundException: Could not find a setter for property totalCost in class Quote
我可以有一个空的二传手,但这是不干净的。在我的真实代码中,大约有 13 个像这样的“只读”属性,我不希望 13 个空白设置器弄乱我的代码。
有一个优雅的解决方案吗?