Java 为什么;alter table drop constraint";在使用HSQLDB运行表创建DDL之前执行

Java 为什么;alter table drop constraint";在使用HSQLDB运行表创建DDL之前执行,java,hibernate,jpa,hsqldb,Java,Hibernate,Jpa,Hsqldb,我打算利用Spring4和Hibernate与HSQLDB一起创建一个内存中的数据库,假设每个单词只有一个词性,仅用于测试目的 我有两个实体类: public class Word { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String word; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name=

我打算利用Spring4和Hibernate与HSQLDB一起创建一个内存中的数据库,假设每个单词只有一个词性,仅用于测试目的

我有两个实体类:

public class Word {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private int id;

  private String word;

  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="PARTOFSPEECH_ID", insertable=false,updatable=false)
  private PartOfSpeech partOfSpeech;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getWord() {
    return word;
  }

  public void setWord(String word) {
    this.word = word;
  }

  public PartOfSpeech getPartOfSpeech() {
    return partOfSpeech;
  }

  public void setPartOfSpeech(PartOfSpeech partOfSpeech) {
    this.partOfSpeech = partOfSpeech;
  }
}

使用上面的代码,我用Hibernate运行Spring,看到一个非常奇怪的
警告

Hibernate: alter table Word drop constraint FKp318rmy36es1v4gqwr8nkaxbs
Sep 01, 2017 8:42:09 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

我只是不明白为什么当
@ManyToOne
@JoinColumn
注释添加到
Word
实体时,hibernate执行的第一条SQL语句是
alter table Word drop constraint
,这超出了我的预期:(


因此,任何人都可以在这方面提供帮助吗?如何删除
alter table
pre语句,以便讨厌的
WARN
堆栈跟踪消失?

您似乎忽略了定义要执行的模式操作的JPA配置。我也考虑了这一点。默认情况下,模式是公共的,但问题是最初table WORD在任何情况下都不存在。因此我不认为这是原因,JPA配置会告诉阅读本文的任何人您已配置要发生的事情,但他们看不到。因此,您可以认为原因是您想要的,但除非您提供关键信息,否则不会提供任何帮助。
Hibernate: alter table Word drop constraint FKp318rmy36es1v4gqwr8nkaxbs
Sep 01, 2017 8:42:09 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PUBLIC.WORD
  at org.hsqldb.error.Error.error(Unknown Source)
  at org.hsqldb.error.Error.error(Unknown Source)
  at org.hsqldb.SchemaManager.getUserTable(Unknown Source)
  at org.hsqldb.ParserDDL.compileAlterTable(Unknown Source)
  at org.hsqldb.ParserDDL.compileAlter(Unknown Source)
  at org.hsqldb.ParserCommand.compilePart(Unknown Source)
  at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
  at org.hsqldb.Session.executeDirectStatement(Unknown Source)
  at org.hsqldb.Session.execute(Unknown Source)
  ... 111 more