休眠我有一個Formula
定義爲:與JPA忽略@Formula
@Entity
@Table(name = "MyEntity")
@org.hibernate.annotations.Table(appliesTo = "MyEntity")
public class MyEntity
{
@Enumerated(value = javax.persistence.EnumType.STRING)
@Transient
@Formula(value = "select e.state from OTHER_ENTITY e")
private State state;
public State getState()
{
return this.state;
}
//setter and another properties
}
但它忽略它。
這裏是我的Persistence Unit
:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="myPersistence" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/orm.xml</mapping-file>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://url:3306/db" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="root" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
的sql沒有Formula
產生。
如果我刪除@Transient
JPA
試圖加載state
列,然後失敗。
我想根據另一個實體的狀態來計算狀態。這就是我認爲Formula
有效的原因。
謝謝!
Udo。
但是,如果我不想在db中聲明一列,那麼@Transient是neede? – ssedano
編號公式已經說過:這不是DB中的列,而是從其他值計算出的值。所以不需要瞬態。 –
那麼爲什麼由於該列丟失而無法加載持久性單元呢? – ssedano