@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/