java - 使用 JPA 工具进行对象关系映射 : Generate Tables from Entities feature

标签 java sql orm jpa jakarta-ee

当我在 Eclipse 中使用 JPA 功能“从实体生成表”时遇到问题。 我设法为我的项目完成所有 ORM 映射,但只有一个给我带来了麻烦。

控制台是这样说的:

Internal Exception: java.sql.SQLSyntaxErrorException: 'OFFER_ID' is not a column in table or VTI 'COMMENT'. Error Code: -1

这是表格外观的图像:

enter image description here

-一个报价有很多评论

-一条评论属于一个报价 ...

实体如下所示: 实体评论:

@Entity
public class Comment {
// Attributes
@Id
@GeneratedValue
@Column(nullable = false)
private Long id;
      ...
@ManyToOne
@JoinColumn(name = "OFFER_ID", nullable = false)
private Offer offer;// One comment must belong to one offer
...Getters and setters

实体报价:

@Entity
public class Offer {
   //...Other attributes

    @OneToMany(mappedBy = "offer")
private List<Coupon> coupons;//One offer can have many coupons

@OneToMany(mappedBy = "offer")
private List<Comment> comments; //One offer can have many comments

    ... getters and setters

在 Offer 类中,我故意粘贴了该类 Offer 与另一个名为 coupons 的类的关系,正如您所看到的,它与 Offer 与 Comment 类应具有的关系完全相同。

那么问题出在哪里呢?

为什么一种关系被映射而另一种则没有?

为什么数据库中新创建的表COMMENT没有名为OFFER_ID的列?

如何修复它?

最佳答案

我相信,这条线

@JoinColumn(name = "OFFER_ID", nullable = false)

给你带来麻烦。因为 Offer 表中确实没有 OFFER_ID 列。

要解决此问题,请向您的 Offer 实体添加一个 id 字段:

@Id(columnName = "OFFER_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

我的语法可能有问题...

关于java - 使用 JPA 工具进行对象关系映射 : Generate Tables from Entities feature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567004/

相关文章:

sql - 在数据库上创建一个变量来保存全局统计信息

java - Hibernate/JPA - 注释 bean 方法和字段

php - 如何在 Magento 的低库存系列中只获取已启用的产品

java - JDBC中Connection.getWarnings()和Statement.getWarnings()的区别?

java - 使用模拟对象时测试粒度

php - 通过id获取内容并通过url显示php mysql

java - 在 Hibernate 注释上分配的生成器类

java - 如何防止 Apache Tomcat 中的 PemGen 空间错误

java - 快速而肮脏的设计与良好的设计

mysql - 触发截断不正确的 DOUBLE 值