Given this schema:
+-----------------+------------------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+-------------------+-------+
| internal_id | int(10) unsigned | NO | PRI | | |
| external_id | varchar(255) | NO | PRI | | |
| mapping_type_id | int(4) unsigned | NO | PRI | | |
| creation_date | timestamp | NO | | CURRENT_TIMESTAMP | |
+-----------------+------------------+------+-----+-------------------+-------+
И эта аннотация:
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name="mapping",
joinColumns = { @JoinColumn(name="internal_id") },
inverseJoinColumns = { @JoinColumn(name="external_id") }
)
@WhereJoinTable(clause="mapping_type_id=2")
private List<Video> videos = Lists.newArrayList();
, которая прекрасно работает с устаревшей базой данных, но когда я запускаю эти аннотированные классы через hsqldb с опцией create-drop (для базовых модульных тестов в памяти)), Я получаю следующее:
[elided]
Caused by: java.sql.SQLException: Column not found: VIDEOS0_.MAPPING_TYPE_ID in statement
[elided]
Итак, я проверил с помощью SchemaExport, и hibernate фактически генерирует схему БД с таблицей соединений для отображения, но она не включает поле mapping_type_id.Как заставить схему сгенерировать это с остальной частью схемы без вмешательства в код, который выполняется в существующей базе данных?