这个问题与here
问题非常相似有人可以解释为什么hibernate决定忽略具有公式的属性,完全在持久化的同时。如果是这样的话可以选择坚持一个有公式的财产吗?还有其他配置吗?
由hibernate触发的查询:
insert into fighterjet (max_speed, country, jet_id) values (?, ?, ?)
请注意hibernate如何忽略'名称' insert查询中的属性,其中包含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+ "]";
}
}
答案 0 :(得分:0)
根据hibernate documentation,它说:
<强> 5.1.4.2。使用hbm.xml进行属性映射
formula(可选):一个SQL表达式,用于定义a的值 计算属性。计算属性没有列映射 他们自己的。
因此Formula
的属性不能在DB表中有列映射。作为替代方案,您可以拥有另一个可以保存其值的属性,并且可以将此新属性映射到数据库表列。