[英]Hibernate - How to persist a property which is mapped with Formula
這個問題和這里問的非常相似
有人能解釋為什么休眠決定在持久化時完全忽略具有公式的屬性。 如果是這樣,那么保留具有公式的屬性的替代方法是什么? 還有其他配置嗎?
休眠觸發的查詢:
insert into fighterjet (max_speed, country, jet_id) values (?, ?, ?)
請注意,hibernate如何忽略插入查詢中的'name'屬性,該查詢在hbm中具有一個公式。
HBM:
<hibernate-mapping>
<class name="com.fighterjet.FighterjetDO" table="fighterjet">
<id name="jetId" type="int" column="jet_id">
<generator class="increment" />
</id>
<property name="name" formula="Select 'hi' from dual" >
<column name="name"/>
</property>
<property name="maxSpeed">
<column name="max_speed" />
</property>
<property name="country">
<column name="country" />
</property>
</class>
</hibernate-mapping>
類:
public class FighterjetDO {
private Integer jetId;
private String name;
private Integer maxSpeed;
private String country;
public Integer getJetId() {
return jetId;
}
public void setJetId(Integer jetId) {
this.jetId = jetId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(Integer maxSpeed) {
this.maxSpeed = maxSpeed;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public String toString() {
return "FighterJet [Jet_id=" + jetId + ", Name=" + name
+ ", Max Speed=" + maxSpeed + ", Country=" + country+ "]";
}
}
根據休眠文檔,它說:
5.1.4.2。 使用hbm.xml進行屬性映射
公式(可選):一個SQL表達式,用於定義計算屬性的值。 計算屬性沒有自己的列映射。
因此,具有Formula
屬性的屬性不能在數據庫表中具有列映射。 作為替代方案,您可以具有另一個可以保存其值的屬性,並且可以將此新屬性映射到數據庫表列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.