Как сделать вставку столбца JPA только во время тестов JUnit? - PullRequest
0 голосов
/ 12 июня 2019
@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 Ответ

2 голосов
/ 12 июня 2019

Вы можете создать orm.xml в каталоге test / resources / META-INF и переопределить сопоставление с помощью XML.

Теги в XML такие же, как аннотации, но вместо case-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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...