を無視して休止状態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は必要ですか? – ssedano
いいえ。数式は既に言っています。これはDB内の列ではなく、他の列から計算された値です。したがって、Transientは必要ありません。 –
次に、その列が存在しないために永続性ユニットがロードされないのはなぜですか? – ssedano