【问题标题】:Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class:引起:org.hibernate.AnnotationException:使用@OneToMany 或@ManyToMany 针对未映射的类:
【发布时间】:2019-08-07 18:56:56
【问题描述】:

我正在使用 Spring Boot 和 mysql 开发一个应用程序。 使用 workbench.ER 图在 mysql 中创建了两个表:

这是我在 Eclipse 中使用 JPA 工具生成的实体类。

交易

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;

/**
 * The persistent class for the transactions database table.
 * 
 */
@Entity
@Table(name = "transactions")
@NamedQuery(name = "Transaction.findAll", query = "SELECT t FROM Transaction t")
public class Transaction implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "TRANSACTIONS_TRANID_GENERATOR")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRANSACTIONS_TRANID_GENERATOR")
    @Column(name = "tran_id")
    private int tranId;

    @Column(name = "created_by")
    private String createdBy;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_on")
    private Date createdOn;

    @Column(name = "total_balance")
    private BigDecimal totalBalance;

    @Column(name = "tran_amount")
    private BigDecimal tranAmount;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "tran_date")
    private Date tranDate;

    @Column(name = "tran_type")
    private String tranType;

    @Column(name = "updated_by")
    private String updatedBy;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "updated_on")
    private Date updatedOn;

    // bi-directional many-to-one association to User
    /*
     * @ManyToOne
     * 
     * @JoinColumn(name = "user_id") private User user;
     */

    @ManyToOne
    @JoinColumn(name = "fk_userId", nullable = false)
    private User user;

}

用户

import java.io.Serializable;
import javax.persistence.*;
import javax.transaction.Transaction;

import java.util.Date;
import java.util.List;

/**
 * The persistent class for the user database table.
 * 
 */
@Entity
@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "USER_USERID_GENERATOR")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_USERID_GENERATOR")
    @Column(name = "user_id")
    private int userId;

    @Column(name = "created_by")
    private String createdBy;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_on")
    private Date createdOn;

    @Column(name = "updated_by")
    private String updatedBy;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "updated_on")
    private Date updatedOn;

    @Column(name = "user_first_name")
    private String userFirstName;

    @Column(name = "user_last_name")
    private String userLastName;

    @Column(name = "user_login_id")
    private String userLoginId;

    @Column(name = "user_password")
    private String userPassword;

    @Column(name = "user_phone")
    private String userPhone;

    // bi-directional many-to-one association to Transaction
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
    private List<Transaction> transactions;

当我运行这个应用程序时,我得到了Use of @OneToMany or @ManyToMany targeting an unmapped class 异常。我不确定我哪里出错了。尝试了相关帖子,但没有成功。

【问题讨论】:

  • 您的映射没有问题。我用 mariadb 的最新版本的 spring boot 对你进行了测试,并设置了属性:spring.jpa.hibernate.ddl-auto=update。它在数据库中创建了所有表,应用程序启动良好,没有任何错误。

标签: java hibernate spring-boot spring-data-jpa


【解决方案1】:

您的导入错误。你的@Entity 被命名为Transaction,但你导入了javax.transaction.Transaction(来自另一个包的类)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多