gpt4 book ai didi

java - 如何使 JPA 列仅在 JUnit 测试期间可插入?

转载 作者:行者123 更新时间:2023-12-02 01:28:01 25 4
gpt4 key购买 nike

@Entity
public class MyEntity {
@Column(insertable = false,
updatable = true,
columnDefinition = "TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")
private LocalDateTime modification;
}

一般来说,时间戳应该仅由mysql管理,而不是由使用实体的应用程序管理。因此insertable=false

但是在junit itest期间,我想强制将修改时间戳更改为固定值。只有 insertable=true 才可能实现。

问题:是否可以仅在测试期间更改属性?

最佳答案

您可以在 test/resources/META-INF 目录中创建 orm.xml 并使用 XML 覆盖映射。

XML 中的标签与注释相同,但不是 kebab-case 中的驼峰式命名法。

请在此处查找完整规范: http://www.datanucleus.org/products/accessplatform/jpa/metadata_xml.html

@Gimby 是对的,orm.xml 是附加的,因此您可以覆盖您需要的内容:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm">

<package>your package here</package>

<entity class="MyEntity">
<attributes>
<basic name="modification">
<column insertable="true" />
</basic>
</attributes>
</entity>

</entity-mappings>

关于java - 如何使 JPA 列仅在 JUnit 测试期间可插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com