瞬态字段默认
我想,如果有可能变化的JPA默认行为,我要让所有领域的“瞬时”瞬态字段默认
我的默认值的Embedable
<embeddable class="beans.Address" metadata-complete="false" >
<attributes >
<basic name="id">
<column name="address_id"></column>
</basic>
<basic name="description">
<column name="address_description"></column>
</basic>
<transient name="city"></transient>
</attributes>
</embeddable>
<entity class="beans.Membership" >
<table name="cc_membership">
</table>
<!-- -->
<attributes>
<id name="id">
<column name="id"/>
<generated-value generator="sq_cc_membership" strategy="SEQUENCE"/>
</id>
<!--more properties-->
<basic name="shortName">
<column name="shortName"/>
</basic>
<version name="version"></version>
<many-to-one name="physicalPerson">
<join-column name="physical_person_id"></join-column>
</many-to-one>
<embedded name="address">
</embedded>
</attributes>
</entity>
的“豆。地址”类更多的属性,但是当我准备增加更多的特性,我不希望看到我的cc_membership表中多个字段,
什么是最好的方式做到这一点
谢谢,
这不能在标准的JPA中完成,所以你会诉诸提供商的特定功能。
的EclipseLink-orm.xml中有,你可以在此描述与XML映射元数据完成orm.xml中标签使用排除默认的映射标签: https://wiki.eclipse.org/EclipseLink/Examples/JPA/EclipseLink-ORM.XML#.3Cexclude-default-mappings.2F.3E
我不知道Hibernate有类似的东西。
我不确定你可以(或者甚至如果你想要)改变默认的JPA行为,但要完成这个,你可以创建一个对象,它可以容纳所有新的字段,蚂蚁标记整个对象作为暂时的。这样
public class TransientFields {
private String field1;
private String field2;
...
// getters and setters
}
而且Address
东西看起来像这样
@Embeddable
public class Address {
// persistent fields
...
@Transient
private TransientFields transientFields;
// getters and setters
}
然后,你可以改变TransientFields
不会影响数据库。
嗨Predrag,我有一个OSGI项目,地址在一个Osgi Bundle中,而Membership在另一个Osgi Bundle中。如果一个Osgi Bundle可以被修改。不会影响另一个。 – jrey 2014-10-30 13:13:37
@ jrey.py对不起,我没有太注意,因为我认为可以用类似的方式完成相同的更改。 – 2014-10-30 13:24:06
这些类是在不同的Osgi Bundles – jrey 2014-10-29 16:00:53