【发布时间】: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