我使用的是postgresql9.6,在使用mysql之前,这两个数据库也有同样的问题。Hibernate4和Hibernate5也有同样的问题。
当我试图持久化一个包含长字符串的对象时,它永远不会结束方法session.persist(object)。另一方面,当字符串为mysql时,它可以很好地工作,因为两个数据库都有同样的问题。没那么长,像这一段。
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 (?, ?, ?, ?)
3条答案
按热度按时间fjaof16o1#
当插入长文本时,hibernate不会持久存在
根据你的问题,当插入长文本时,它不会持续存在。这是因为默认的字符串长度是255。您可以在数据库中看到。varchar(255)长度是255。您可以使用以下方法来计算长度:
如果您不确定长度,那么最好根据您的需要选择lob、blob或clob。您可以阅读lob、blob和clob的详细信息并选择其中一个。对于文本lob或clob将为您工作。
qlvxas9a2#
我知道发生了什么。由于信息无法完全传输到另一个设备(树莓pi)中的db,因此该方法一直没有结束。
我用以下命令将pc和raspberry pi的网络适配器的mtu更改为1492:
更多信息:http://www.ubuntugeek.com/how-to-change-mtu-maximum-transmission-unit-of-network-interface-in-ubuntu-linux.html
s8vozzvw3#
有两种方法,
你可以像这样设置列定义
如果您不知道字符串的最大长度,可以将columndefinition设置为文本