2016-03-06 2 views
0

Я таблица генерируется из класса сущностей с помощью Hibernate, и текущего порядка этой таблицы:столбец таблицы для того, порожденного Hibernate

describe Context; 
+--------------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+--------------+--------------+------+-----+---------+-------+ 
| id   | int(11)  | NO | PRI | NULL |  | 
| context  | varchar(200) | NO |  | NULL |  | 
| publish_time | datetime  | NO |  | NULL |  | 
| URL   | varchar(400) | NO |  | NULL |  | 
| term_id  | int(11)  | NO | MUL | NULL |  | 
+--------------+--------------+------+-----+---------+-------+ 
5 rows in set (0.00 sec) 

Тогда это утверждение сконфигурировано для загрузки данных в базу данных:

LOAD DATA LOCAL INFILE 'context.txt' INTO TABLE Context FIELDS TERMINATED\ BY '\t' LINES TERMINATED BY '\n' 

Однако порядок 5 столбцов файла данных «context.txt» отличается от порядка столбцов в таблице. Из-за этого, я получил сообщение об ошибке, когда загрузка запускается в приложении с:

 20:46:00,207 ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] 
    (ServerService Thread Pool -- 68) HHH000388: Unsuccessful: LOAD DATA 
LOCAL INFILE '/myproject/src/main/resources/context.txt' INTO TABLE Context FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' 
      20:46:00,207 ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] (ServerService Thread Pool -- 68) Cannot add or update a child row: a foreign key constraint fails (`BombDS`.`Context`, CONSTRAINT `FK_afatp1vwi13k5r0hftr04vctl` FOREIGN KEY (`term_id`) REFERENCES `Term` (`id`)) 

Если я не могу изменить порядок в файле, есть способ контролировать порядок столбцов, генерируемый Hibernate ?

ответ

0

указать порядок столбцов из файла в операторе НАГРУЗКИ:

LOAD DATA LOCAL INFILE 'C:/Users/blah/Desktop/something.csv' INTO TABLE 
test.test_table 
FIELDS TERMINATED BY ',' 
optionally ENCLOSED by '"' 
(id, name, count) 
+0

Я получил ту же ошибку, что только создал таблицу, но не может загрузить данные. Теперь я попытался загрузить вручную в пустую таблицу, созданную Hibernate, я получил это сообщение об ошибке: ERROR 2013 (HY000): Потерянное соединение с сервером MySQL во время запроса – user697911

+0

huh. Я часто использую инструкцию LOAD без каких-либо проблем. Я не уверен, что это твоя проблема. «Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (' BombDS'''Context', CONSTRAINT 'FK_afatp1vwi13k5r0hftr04vctl' FOREIGN KEY (' term_id') ССЫЛКИ 'Term' (' id')) "- заставляет его звучать как если у вас есть @Embeddable или @ OneToOne/@ OneToMany в связанной таблице, и она не может вставить данные, потому что другая таблица имеет общий идентификатор. – neal

+0

Да. «term_id» - это внешний ключ в Context, который ссылается на первичный ключ «id» в таблице Term. – user697911

Смежные вопросы