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

时间:2019-06-12 12:12:42

标签: java spring hibernate junit

@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测试期间,我想强行将修改时间戳记更改为固定值。只有insertable=true才有可能。

问题:是否只能在测试期间更改属性?

1 个答案:

答案 0 :(得分:2)

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

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

请在此处找到整个规格: Google Sheets API

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