如何解决使用OpenXava是否“无法执行保存操作:org.hibernate.exception.DataException:无法执行语句”?
我对Java很陌生,需要一些帮助。我已经使用OpenXava创建了一个@MappedSuperclass“参与者”。
null
然后我将其扩展为另外两个类“ Staff”和“ Participant”。
import javax.persistence.*;
import org.hibernate.annotations.*;
import org.openxava.annotations.*;
@MappedSuperclass
public class Attendees {
@Id @Hidden @Column(length = 3)
@GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid",strategy="uuid")
private String oid;
public String getoid() {
return oid;
}
public void setoid(String oid) {
this.oid = oid;
}
}
和
import javax.persistence.*;
@Entity
public class Staff extends Attendees{
@Column (length = 50)
private String fullName;
@Column (length = 2)
private int age;
@Column (length = 10)
private int contactNum;
@Embedded
private Address address;
@Embedded
private Medicalinformation medicalInfo;
...
}
地址:
import javax.persistence.*;
@Entity
public class Participants extends Attendees{
@Column (length = 50)
private String fullName;
@Column (length = 2)
private int age;
@Column (length = 10)
private int contactNum;
@Embedded
private Address address;
@Embedded
private Medicalinformation medicalInfo;
...
}
和
医学信息:
import javax.persistence.*;
@Embeddable
public class Address {
@Column(length = 100)
private String street;
@Column(length = 100)
private String suburb;
@Column(length = 100)
private String city;
@Column(length = 100)
private String province;
@Column(length = 5)
private int areaCode;
...
}
除了Attendees类,我省略了所有getters()和setters()。
我以Java应用程序的形式运行该应用程序,直到我尝试输入并保存记录为止。当我单击“保存”时,系统提示:
import javax.persistence.*;
@Embeddable
public class Medicalinformation {
@Column (length = 3)
private String dailyMedication;
@Column (length = 300)
private String medicationDescription;
@Column (length = 300)
private String allergies;
@Column (length = 300)
private String dietRequirements;
@Column (length = 300)
private String additionalNotes;
...
}
在OpenXava的控制台中仔细检查后,我发现以下内容:
Impossible to execute Save action: org.hibernate.exception.DataException: Could not execute statement
我在这里没有提到的应用程序中的其他实体,允许我保存新记录。但是,这些实体未与提供的代码链接或相关。
请帮助。
解决方法
错误已清除:
“ SQLDataException:数据异常:字符串数据,右截断;表:PARTICIPANTS列:OID”
问题出在表参与者的OID列中(您尝试插入的字符串由于某些原因而被截断了),并且可能与jamie所说的有关:
https://stackoverflow.com/a/53182256/13745944
,更改:
@Id @Hidden @Column(length = 3)
@GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid",strategy="uuid")
private String oid;
通过:
@Id @Hidden @Column(length = 32)
@GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid",strategy="uuid")
private String oid;
注意@Column(length = 32)而不是@Column(length = 3)。同样,您还必须删除表,以便OpenXava再次生成它们,如果它们已经有数据,只需执行ALTER TABLE来更改OID列的列长。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。