我使用的是Postgresql 9.6,在使用mySQL之前,两个数据库都出现了相同的问题。 Hibernate 4和Hibernate 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 (?, ?, ?, ?)
答案 0 :(得分:0)
插入长文本时休眠不会持久
根据您的问题,插入长文本时它不会持续存在。这是因为默认情况下,字符串长度为255。您可以在数据库中看到。 VARCHAR(255)长度为255。 您可以使用以下方法提及长度:
@Column(name=" description", length = 300)
private String description;
如果您不确定长度,则最好根据需要使用lob,blob或clob。您可以阅读lob,blob和clob的详细信息,然后选择其中之一。对于文本lob或clob来说,它很适合您。
答案 1 :(得分:0)
有两种方法,
您可以将columnDefinition设置为
@Column(name = "notes", columnDefinition = "varchar(300)")
private String notes;
如果您不知道字符串的最大长度,可以将columnDefinition设置为类似文本的
@Column(name = "notes", columnDefinition = "text")
private String notes;
答案 2 :(得分:0)
我知道发生了什么事。该方法之所以永无止境,是因为信息无法完全传输到另一台设备Raspberry Pi中的数据库。
我使用以下命令将PC和Raspberry Pi的网络适配器的MTU更改为1492:
sudo ifconfig eth0 mtu 1492