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

在Hibernate表中保存POJO时的Hibernate.MappingException

督阿苏
2023-03-14

userdo.java

@Entity
@Table(name = "UserDO")
public class UserDO {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long userId;

    private boolean successfullyLinked;

    private UserInformation userInformation;
}

UserInformation.java

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "address", "country_code", "currency_code", "email_address", "name", "phone" })
public class UserInformation {

    @JsonProperty("address")
    @Valid
    private Address address;

    @JsonProperty("country_code")
    @NotNull
    private String countryCode;

    @JsonProperty("currency_code")
    @Size(min = 3, max = 3)
    private String currencyCode;

    @JsonProperty("email_address")
    @NotNull
    private String emailAddress;

    @JsonProperty("name")
    @Valid
    @NotNull
    private Name name;

    @JsonProperty("phone")
    @Valid
    private Phone phone;

}

我试图将UserInformation POJO保存为Hibernate中UserDO的一部分。然而,当将其作为Spring Boot应用程序的一部分运行时,我得到了一个错误。下面是堆栈跟踪。

org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autocconfigure/orm/jpa/hibernatejpaAutocconfiguration.class]中定义的名为“Entity ManagerFactory”的bean时出错:调用init方法失败;嵌套异常为javax.persistence.persistenceException:[persistenceUnit:default]无法构建Hibernate SessionFactory

原因:javax.persistence.persistenceException:[persistenceUnit:default]无法构建Hibernate SessionFactory

原因:org.hibernate.mappingException:无法确定:com.paypal.marketplaces.vaas.api.models.userInformation的类型,位于表:Tracking,列:[org.hibernate.mapping.column(userInformation)]

注意:UserInformation POJO相当复杂,它内部有其他对象,这些对象内部有对象(以此类推)。任何不需要将UserInformation POJO显式映射到UserDO表的colums的解决方案都是可取的。

如有任何帮助,我们将不胜感激!

共有1个答案

姜育
2023-03-14

持久性提供程序不知道那个类,也不知道如何处理它。我建议将其设为embeddable并可选地指定列名:

import javax.persistence.Embeddalbe;
import javax.persistence.Column;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "address", "country_code", "currency_code", "email_address", "name", "phone" })
@Embeddable
public class UserInformation {

    @JsonProperty("country_code")
    @NotNull
    @Column(name = "COUNTRY_CODE")
    private String countryCode;

您必须对每个嵌套类重复此过程。

最后用以下代码注释userinformation

@Embedded
private UserInformation userInformation;
 类似资料:
  • 我试图用Hibernate保存一个表。父表与其子表具有一对多关系。父表POJO有其子表POJO的集合。 当我保存父表时,数据也被插入到它的子表中,但它的外键不为NULL。 下面是我的代码:家长: 儿童: Hibernate服务: 我找到了一个解决方案,将我的孩子反向映射到父母,如下所示 但我在想这是否可以避免。我希望还有其他方法,我不需要把我的每个孩子都映射到父母那里。 Kinldy帮助,如果你能

  • 问题内容: 我正在尝试使用hibernate将数据插入数据库。这是我要执行的动作 但这给我一个错误的说法 线程“主”中的异常org.hibernate.TransientPropertyValueException:非null属性引用了一个瞬态值- 必须在当前操作之前保存瞬态实例 这是我的学生详细信息实体 我的学生详细信息hbm.xml 我的主题实体看起来像 Subject.hbm.xml 这是S

  • 我是JUnit新手,尝试在我的遗留代码库中实现它<当我测试hibernateEntity时,我应该断言什么。save()

  • 我有一对一关系的问题-保存后,外键总是被设置为空,即使我有关联的对象。我正在使用Hibernate4.3。7.最终版本为Spring 4.0。0.0版本和MySql 5.6数据库。 在我保存LawFirmProfile对象列后的情况下,参考lawFirm的lawFirm_id始终为空。 实体: 以下是负责保存此记录的代码: Hibernate和Spring配置: 道也是Spring豆,方法注释为@

  • 当我测试我的项目时,数据库中只创建了4个表,但没有创建其他表,我不知道为什么。创建了表、、和,但没有创建表和我没有放在本例中的其他表。有一些属性我忘记了?感谢您的帮助。以下是一些文件: hibernate.cfg.xml Position.hbm.xml 拒绝位置.hbm.xml 通知.hbm.xml Demande.java Demande.hbm.xml User.java 用户.hbm.xm

  • Hibernate POJO Generator  能够根据数据库结构生成通过Hibernate操作表格中每个字段所需要的所有Java源代码(包括:带注释的实体类,DAO层,Data Factory,Spring与Hibernate配置文件等)。此外这个生成器还能够为每一个组件创建所有需要的帮助类和单元测试。