微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用OpenXava是否“无法执行保存操作:org.hibernate.exception.DataException:无法执行语句”?

如何解决使用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;


... 
}

下面是两个@Embedded元素的代码

地址:

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?