我有一个 SQL 命令将字段更新到表中,并根据“cat file.txt”填充它。这个文件有很多行,我想稍后进入休眠字段,但似乎在从 db hibernate 读取它之后删除所有回车。
这是我从 shell 脚本(bash)执行的脚本:
REQUEST_FILE=`cat file.txt`
echo "UPDATE table SET request_info='$REQUEST_FILE' WHERE id=1;" > ./after.sql
如果我做 after.sql 的 cat 我得到:
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
这是存储在 db 上的数据,该行如何:
# 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 info 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
你有什么主意吗?谢谢
MMMHUHU
相关分类