当前位置: 首页 > 知识库问答 >
问题:

当我将数据保存为实体的无默认构造函数时,我遇到hibernate异常?我做错了什么

秦禄
2023-03-14

>

创建表首选项(UID序列非空、用户ID整数非空、主题字符变化(50)、模板字符变化(50)、按整数非空创建、按时区非空的时间戳创建、按整数非空修改、按时区非空的时间戳修改、约束首选项主键(用户ID),约束首选项\u FKEY外键(用户\u ID)引用用户(UID)匹配更新时无操作删除时无操作

);

我在应用程序中使用了JPA注释

由于安全原因,我不能上传整个文件

我已经为首选项定义了属性和属性

私人用户偏好;

我正在做地图绘制

line 1: @OneToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
line2: @JoinColumn(name="UID",referencedColumnName="USER_ID")

这是我的用户首选项文件

@Entity
@Table(name="USER_PREFERENCES")
public class UserPreferences {
    private int uid;
     private String userId;
     private String theme;
     private String template;

    public UserPreferences(int uid, String userId, String theme, String template, RecordDetails recordDetails) {
        super();
        this.uid = uid;
        this.userId = userId;
        this.theme = theme;
        this.template = template;

    }


    @Id
    @Column(name="UID",updatable=false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }


    @Column(name="USER_ID", updatable=false, unique=true)
    public String getUserId() {
        return userId;
    }


    public void setUserId(String userId) {
        this.userId = userId;
    }


    @Column(name="THEME")
    public String getTheme() {
        return theme;
    }


    public void setTheme(String theme) {
        this.theme = theme;
    }

    @Column(name="TEMPLATE")
    public String getTemplate() {
        return template;
    }

    public void setTemplate(String template) {
        this.template = template;
    }

}

所有属性都符合我在其中给出的数据库表。

我有一个用户列表,我想为每个用户分配一个首选项,所以我采用了一对一映射

当没有行的偏好表,我可以看到用户列表,并添加任何用户的偏好。

实体:UserPreferences没有默认构造函数

你能不能帮我解释一下,为什么我只有在添加了一行后才能得到这个结果?我该如何解决它。

在下面一行,我得到了一个例外

标准=session.create标准(User.class); usersList=criteria.set结果变压器(Criteria.DISTINCT_ROOT_ENTITY). list();

提前感谢

共有1个答案

云利
2023-03-14

由于定义了参数构造函数,因此需要明确定义默认构造函数。

只是加上

public UserPreferences() {
    // needed for JPA
}

为你们班干杯。

Hibernate使用反射来实例化实体类。反射使用

 类似资料:
  • 问题内容: 在上面的代码中,我有一个简单的类和一个类级别的实例,也有一个具有相同名称的本地实例。运行上面的代码时,出现以下异常: 问题答案: 您的main方法创建一个实例(),该实例导致实例变量()的初始化,并创建另一个实例,依此类推… 您有无限的构造函数调用链,从而导致。 在上面的代码中,我有一个简单的类和一个类级别的实例 您没有课程级别的实例。您有一个实例级别的实例。如果要一个类级别的实例,请

  • 我正在创建一个带有片段的应用程序,在其中一个片段中,我创建了一个非默认构造函数,并收到以下警告: 有人能告诉我为什么这不是个好主意吗? 你能否建议我如何做到这一点: 不使用非默认构造函数?

  • 问题内容: 我试图保留JAXB生成的对象。这是示例结构: 下面是类的结构: 现在,该类具有一个参数构造函数,它接受一个String。我想将该字符串作为整个记录的一部分保留在数据库中。我看到了 org.hibernate.InstantiationException:实体的默认构造函数:RecipientDetailsList 尝试保存对象时发生异常。我有两个问题: 我们是否有任何例外处理方法?我无

  • 问题内容: 我遇到这个错误: 不知道为什么我得到那个例外 我正在运行 主要 这是我的 课 当我保存,更新和删除它时,它可以正常工作,所以我不知道我在做什么错 EDIT1 在这里是principal.Cliente 问题答案: 我可以说缺少默认构造函数,

  • 问题内容: 这对您来说可能听起来很愚蠢,但是为什么我需要在s中定义一个空的构造函数? 我看到的每个教程都说:每个实体都需要一个空的构造函数。 但是Java总是给您一个默认的不可见的空构造函数(如果您不重新定义一个的话)。 谢谢。 我认为这是一个语义问题。我所理解的“需求”是书面的。 含义:始终在您的实体中编写一个空的构造函数。 例: 但是,当您不重新定义Java时,Java总是会为您提供一个空的构