Hibernate:基于实体类自动创建/更新db表

我有以下实体类(在Groovy中):

import javax.persistence.Entity

import javax.persistence.Id

import javax.persistence.GeneratedValue

import javax.persistence.GenerationType

@Entity

public class ServerNode {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

Long id

String firstName

String lastName

}

and my persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

<persistence-unit name="NewPersistenceUnit">

<provider>org.hibernate.ejb.HibernatePersistence</provider>

<properties>

<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/Icarus"/>

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

<property name="hibernate.connection.username" value="root"/>

<property name="hibernate.connection.password" value=""/>

<property name="hibernate.archive.autodetection" value="class"/>

<property name="hibernate.show_sql" value="true"/>

<property name="hibernate.format_sql" value="true"/>

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

</properties>

<class>net.interaxia.icarus.data.models.ServerNode</class>

</persistence-unit>

</persistence>

and the script:

import javax.persistence.EntityManager

import javax.persistence.EntityManagerFactory

import javax.persistence.Persistence

import net.interaxia.icarus.data.models.ServerNode

def factory = Persistence.createEntityManagerFactory("NewPersistenceUnit")

def manager = factory.createEntityManager()

manager.getTransaction().begin()

manager.persist new ServerNode(firstName: "Test", lastName: "Server")

manager.getTransaction().commit()

数据库Icarus存在,但当前没有表。我希望Hibernate基于实体类自动创建和/或更新表。我将如何完成?

回答:

我不知道离开hibernate前线是否会有所作为。

该参考表明,它应该是hibernate.hbm2ddl.auto

值为create将会在sessionFactory创建时创建表,并保持它们不变。

值为create-drop会创建你的表,然后在关闭sessionFactory时将其删除。

也许你应该javax.persistence.Table显式设置注释?

希望这可以帮助。

以上是 Hibernate:基于实体类自动创建/更新db表 的全部内容, 来源链接: utcz.com/qa/397799.html

回到顶部