是否有一种方法,以一种可配置的方式将字段视为@Transient ?



我们有一个不属于我们的数据库,它只有在性能测试和CR需求等之后才部署到生产中,这是一个瓶颈。较低的环境没有相同的限制。

当进行模型更改时,我们的代码库在DB之前就已经准备好了,并且在DB准备好之前不能部署,否则SELECTINSERT查询中包含的新列将不存在并导致错误。这会导致等待模式,一般性头痛等。

幸运的是,@Transient可以完美地解除prod的阻塞,但它将被部署到所有环境中。理想情况下,我们可以使该行为可配置,例如,只有生产将这些字段视为@Transient

@Getter
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "INCOME", schema = "dbo")
public class Income {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = INCOME_ID)
private long incomeId;
@Column(name = RELATED_ID, insertable = false, updatable = false)
@Transient
private Long relatedId; 

有什么建议或可能的方法吗?

您可以利用xml映射。在你的例子中,它看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"
version="2.1">
<entity class="package.name.Income">
<attributes>
<transient name="relatedId"/>
</attributes>
</entity>
</entity-mappings>

相关内容

最新更新