【问题标题】:Create database tables from entities从实体创建数据库表
【发布时间】:2014-12-30 17:52:44
【问题描述】:

在休眠中是否类似于实体框架中的代码优先方法? 我正在尝试从 java 类(MySQL)准备数据库表。我已经准备好了带有 JPA 注释的 java 类,但我不确定现在该做什么(我正在使用 IntelliJ)。我应该在我的主目录中创建哪些表格?还是我应该使用一些工具?

我的一个类如下所示:

@Entity
public class Item {

    @Id
    @GeneratedValue
    private long id;

    @Column
    private String text;

    @ManyToMany(mappedBy = "items")
    private Set<Container> containers = new HashSet<Container>();

    public long getId() {
        return id;
    }

    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }

    public Set<Container> getContainers() { return containers; }
}

【问题讨论】:

标签: java mysql hibernate jpa orm


【解决方案1】:

您需要将hibernate.hbm2ddl.auto 属性设置为create。如果是这样,当您第一次运行应用程序时,将创建表。

【讨论】:

    【解决方案2】:

    在 hibernate.cfg.xml 配置文件中,您可以设置一个名为 hbm2ddl.auto 的属性,告诉 hibernate 为您创建一个表:

    <property name="hbm2ddl.auto">create</property>
    

    当您第一次运行您的应用程序时,您可以将属性设置为create,稍后您可以将其更改为update

    点击此链接了解更多详情:

    Hibernate hbm2ddl.auto possible values and what they do?

    【讨论】:

      【解决方案3】:

      澄清一下:我使用的是 JPA2,所以配置在 persistence.xml 中。对我有用的是设置:

      <property name="hibernate.hbm2ddl.auto">create</property>
      

      没有“休眠”。它不起作用。

      为了启动它,我需要通过创建 EntityManager 来准备主函数,因为在创建 EntityManager 时会映射到 db:

      public static void main(String [] args){
          EntityManagerFactory factory = Persistence.createEntityManagerFactory("NewPersistenceUnit"); //name of persistence unit here
          EntityManager entityManager = factory.createEntityManager();
      }
      

      【讨论】:

        【解决方案4】:
        @OneToMany(mappedBy = "")
        @Fetch(value = FetchMode.SUBSELECT)
        
        @OneToMany(mappedBy = "")
        @Fetch(value = FetchMode.SUBSELECT)
        

        就我而言,我在主表中两次提到了相同的OneToMany 关系。因为我有两个关系。我在两个关系中使用了@Fetch(value = FetchMode.SUBSELECT)。这对我来说很好。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-08
          • 2020-06-01
          • 2011-12-29
          • 2016-03-01
          • 2011-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多