У меня есть команда SQL, которая обновляет поле в таблицу и заполняет его на основе "cat file.txt".Этот файл состоит из множества строк, и я хотел бы позже добавить его в поле гибернации, но кажется, что после чтения его из db hibernate удалите все символы возврата каретки.
Это сценарий, который я выполняю из сценария оболочки (bash):
REQUEST_FILE=`cat file.txt`
echo "UPDATE table SET request_info='$REQUEST_FILE' WHERE id=1;" > ./after.sql
если я сделаю cat of after.sql, то получу:
UPDATE table SET request_info='1-Start-Env Script for Env
2-insert done
3-update info done
4-all performed correctly' WHERE id=29;
это структура таблицы БД:
Table: table
Columns:
id int(11) AI PK
submit_date datetime
request_type varchar(45)
request_info longtext
этоданные хранятся в БД и как строка:
# id, submit_date,request_type, request_info
'29', '2019-02-11 04:55:21', 'check', '1-Start-Env Script for Env\n2-insert done\n3-update info done\n4-all performed correctly'
Так что до этого шага, я думаю, все в порядке, так как поле содержит '\ n'
Класс Hibernate делается таким образом:
@Entity
@Table(name="table")
@NamedQuery(name="Table.findAll", query="SELECT u FROM Table u")
public class Table implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(name="request_info")
private String requestInfo;
@Column(name="request_type")
private String requestType;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="submit_date")
private Date submitDate;
и когда я получаю доступ к переменной requestInfo, вывод будет:
1-Start-Env Сценарий для Env2-insert done3-update информация done4-all выполнено правильно
Эта переменная используется для создания файла после нажатия кнопки на странице JSF:
HttpServletResponse response = (HttpServletResponse)
fc.getExternalContext().getResponse();
response.reset();
response.setContentType("text/plain");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
OutputStream output = response.getOutputStream();
output.write(request.getRequestInfo().getBytes());
output.flush();
output.close();
Если я сделаю System.out, я увижу правильные данные, тогда я думаю,если функция getBytes не возвращает возврат каретки:
System.out.println("file content:" +request.getRequestInfo());
Вывод:
file content:1-Start-Env Script for Env
2-insert done
3-update info done
4-all performed correctly
есть идеи?спасибо