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

通过JDBC语句执行DDL“alter table score add constraint外键(注册_id)引用注册(id)”时出错

曹鹏海
2023-03-14

我有一个有分数表的注册班。我试图引用Score类,但通过JDBC语句执行DDL“alter table Score add constraint…foreign key(registration_id)references registration(id)”时出错,原因是:java。sql。SQLException:无法打开引用的表“enrollment”。运行应用程序后,会在数据库中创建分数表,但缺少注册表,并且分数的注册id列不是外键。我怎样才能解决这个问题?我试图用@Cache注释,并忽略表的双重创建,但没有成功。我正在使用MySQL。

@Entity
@Table(name = "enrollment")
public class Enrollment {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id")
    public Student student;
    
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "date", nullable = false)
    public Date date;

    @Column(name = "rank", nullable = false)
    public int rank;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "specialty_id", referencedColumnName = "id")
    public Specialty specialty;
    
    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Column(name = "files", columnDefinition = "BLOB", nullable = false)
    private byte[] files;
    
    @OneToMany(mappedBy = "enrollment", fetch = FetchType.LAZY)
    public List<Score> scores;
    
    @Column(name = "state", length = 50, nullable = false)
    public String state;
   
}

@Entity
@Table(name = "score")
public class Score {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "score_forming_object_id", referencedColumnName = "id")
    private ScoreFormingObject scoreFormingObject;
    
    @Column(name = "score", nullable = false)
    private double score;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "enrollment_id")
    private Enrollment enrollment;
}

共有2个答案

云韬
2023-03-14

https://stackoverflow.com/a/64316793/14644191@Rajib Garai的回答对我有用。我在application.properties中添加了spring.jpa.properties.hibernate.globally_quoted_identifiers=true,问题得到了解决。

逑和蔼
2023-03-14

检查您的注册实体类是否位于应用程序类的同一目录或子目录中。

 类似资料:
  • 我真的需要帮助,我在stackoverflow上找到的所有问题中都搜索到了,但没有任何效果。我以前从未使用过hibernate,我不知道自己做错了什么 这是我的存储库:https://github.com/ionutincau/test_db 我收到了这个错误:

  • 我在使用以下方言创建表时遇到以下错误 “org.hibernate.dialoget.mysqlinoddDialogic”

  • 问题内容: 我真的需要帮助,我在关于stackoverflow的所有问题中进行了搜索,但没有任何效果。我以前从未使用过hibernate模式,也不知道自己在做什么错。 这是我的存储库:https : //github.com/ionutincau/test_db 我收到此错误: 问题答案: 在您的CFG文件中,请更改hibernate方言

  • 我正在做一个简单的Spring Boot项目,我试图从导入中加载一些数据。sql文件。表是从实体创建的,但数据没有加载,我在下面收到了这个错误。问题只针对MySQL,对于H2没有错误。 这是实体: 应用yml公司 import.sql 聚甲醛 我认为问题不在于方言,因为它创建了表,只有数据没有加载到表中。我正在使用org。冬眠地方话mysql8dialent,如果我更改dialent的值,它不会创

  • 问题内容: 我是hibernate世界和面对的新手, 在hibernate5.2.9版本中运行独立程序时出现异常。但是在hibernate4版本中,我所有的代码都运行良好。我寻找了很多问题并解决了,但没有得到有效的答案。 配置文件 Pom.xml 实用文件 实体文件 主要方法 安慰 问题答案: 您应该尝试使用另一种方言,例如OR 或OR,以查看哪种方言适合您。 总而言之,您的当前方言正在creat