Я экспортирую данные из MS SQLServer в файл XML, а затем использую этот набор данных при выполнении модульных тестов, требующих базы данных. Для этого я использую плагин dbunit maven.
К сожалению для меня, не все столбцы в некоторых таблицах отображаются в моих классах сущностей.
В качестве примера, скажем, у нас есть таблица с именем 'member'.
Таблица участников имеет три столбца: memberid, membername, memberrank.
Когда я делаю экспорт, я экспортирую все три столбца.
Но в моем классе MemberEntity я только сопоставляю memberid и membername, потому что мне не нужен memberrank в моем приложении. Поэтому я бы выглядел следующим образом: MemberEntity:
@Entity
@Table(name = "member")
public class MemberEntity {
@Id
@GeneratedValue()
@Column(name = "memberid", nullable = false)
private Integer memberid;
@Column(name = "membername", nullable = false)
private String membername;
...
}
Затем я пытаюсь вставить набор данных в HSQLDB перед тестовым набором:
IDatabaseConnection conn = new DatabaseConnection(((SessionImpl) (entityManager.getDelegate())).connection());
IDataSet dataset = new XmlDataSet(
resourceLoader.getResource("classpath:dataset.xml").getInputStream());
conn.getConfig().setProperty("http://www.dbunit.org/properties/datatypeFactory", new MsSqlDataTypeFactory());
DatabaseOperation.CLEAN_INSERT.execute(conn, dataset);
В этот момент я получаю исключение о том, что столбец MemberRank не существует. Это говорит что-то вроде следующего:
org.dbunit.dataset.NoSuchColumnException: MEMBER.MEMBERRANK - (Non-uppercase input column: memberrank) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
Когда я удаляю столбец из набора данных, все хорошо. Если я добавлю сопоставление memberRank в свой класс Entity, снова все будет хорошо.
Но я не могу добавить отображение столбца в свой класс Entity. Есть ли простой способ (кроме удаления столбца и связанных данных из экспортированного набора данных вручную) исключить (попытался ли) добавить этот столбец при выполнении INSERT?