【问题标题】:Hibernate not creating new table休眠不创建新表
【发布时间】:2017-01-24 20:05:51
【问题描述】:

我有下表

@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name = "School")


@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class School implements  Serializable,  Comparable<School>{

    private static final long serialVersionUID = 1L;


    @JsonProperty
 @JsonProperty
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
long id;

}

这是设置休眠配置以创建新数据库的 yaml 文件

 charSet: UTF-8
    hibernate.dialect: org.hibernate.dialect.MySQLDialect
    hibernate.hbm2ddl.auto: create
    hibernate.show_sql: true

我阅读了许多解决类似问题的问题,但我不明白为什么休眠会忽略此表

在尝试不同的解决方案时,似乎只有两个表没有被更新或重新创建。莫非是他们之间的关联?

这是与之关联的第二个类

@Entity
@Table(name = "Student")
@SecondaryTable(name = "thirdTable", pkJoinColumns=@PrimaryKeyJoinColumn(name="thirdtablepk_id", referencedColumnName="id"))


@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)


public class Student  implements Comparable<Student>, Serializable {

    private static final long serialVersionUID = 1L;
    @JsonProperty
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    long id;

    @ManyToOne
    School school;
}

【问题讨论】:

  • @Table(name = "Scool") vs @Table(name = "School")?
  • 很好,这是一个错字。不在我的实际代码中:(
  • 当有可以使用的 JPA 标准属性 javax.persistence.XXX 名称时,为什么要使用 Hibernate 特定的 DDL 属性?
  • 嗨 Neil,这是一个 dropwizard 应用程序,我正在关注他们的文档。 , github.com/dropwizard/dropwizard/blob/master/dropwizard-example/… 你能给我举个例子来说明你的意思吗?
  • 你的意思是唯一的ID吗?我已经在用了,我都试过了

标签: mysql hibernate jpa dropwizard


【解决方案1】:

我猜你用过

hibernate.hbm2ddl.auto:创建

一旦创建表,就不会再次创建它。为了删除和创建表 eevry 时间,您需要使用 belwo 配置。

hibernate.hbm2ddl.auto: create-drop

希望这能解决您的疑问。

【讨论】:

  • 我也试过这个。我几乎可以肯定它在让 hibernate 忽略它的类中的某些东西
  • 它仅不适用于此表和另外一个表,不会反映对架构的更改。你认为这是因为这两个表之间的关联吗?我已经用详细信息编辑了问题
  • 我看到代码你也必须在 School 实体中添加 @OnetoMany 关系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多