2014-11-03 136 views
1

休眠類似於Entity Framework的代碼優先方法嗎? 我想從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; } 
} 
+0

可能重複: //stackoverflow.com/questions/4507142/does-hibernate-create-tables-in-the-database-automatically) – Xstian 2014-11-04 10:10:23

回答

0

爲了澄清:我是用JPA2,這樣的配置在的persistence.xml。什麼工作對我來說是設置:

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

沒有「休眠」。它不工作。

而且到我需要與創建EntityManager的準備主要功能啓動它,因爲映射到數據庫發生時被創建:

public static void main(String [] args){ 
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("NewPersistenceUnit"); //name of persistence unit here 
    EntityManager entityManager = factory.createEntityManager(); 
} 
的[是否休眠在數據庫中創建自動錶格(HTTP
2

您需要與價值create設置hibernate.hbm2ddl.auto屬性。如果是這樣,當您第一次運行應用程序時,將創建表。

2

在hibernate.cfg.xml配置文件,你可以設置一個屬性叫做hbm2ddl.auto告訴Hibernate創建一個表給你:

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

當你運行你的第一次應用,那麼你可以設置物業改爲create,稍後您可以將其更改爲update

請點擊此鏈接瞭解詳情:

Hibernate hbm2ddl.auto possible values and what they do?