【发布时间】:2019-03-17 13:37:47
【问题描述】:
我使用的是 Postgresql 9.6,在使用 mySQL 之前,我在这两个数据库中遇到了同样的问题。我对 Hibernate 4 和 5 也有同样的问题。
当我试图持久化一个带有长字符串的对象时,它永远不会结束方法 session.persist(object)。另一方面,当字符串 ismySQL 和我在两个数据库中遇到相同的问题时,它可以完美运行。 没那么长,就像这一段。
VehicleDAO.java 中的 addVehicle 方法
public Vehicle addVehicle(Vehicle vehicle) {
Session session =
this.sessionFactory.getCurrentSession();
session.persist(vehicle);
return vehicle;
}
车辆属性:
public class Vehicle {
@Id
@Column(name = "idvehicle")
@GeneratedValue(strategy = GenerationType.IDENTITY)
int idVehicle;
@Column(name = "name")
String name;
@Column(name = "description")
String description;
@Column(name = "photob64")
String photoB64;
Eclipse 控制台日志:
Hibernate: insert into vehicle (description, name, photob64, idvehicletype) values (?, ?, ?, ?)
【问题讨论】:
-
要检查两件事:1. DB 中的列可能有限制最大字符数量的约束 2. 检查最后是否提交了事务
-
@KamilW。在 Postgresql 中,文本类型列的限制是 1GB
-
你能直接在DB上执行这个SQL吗?它将允许我们跟踪问题可能出现在哪一侧(休眠/数据库)。
-
问题出在数据库端。如果我通过控制台执行查询会挂起
-
这个字符串有多长?也许它需要更多的时间来插入。执行查询并离开 if 几分钟,看看之后会发生什么,我认为 postgres 必须返回一些错误代码。
标签: java mysql spring postgresql hibernate