我有以下实体类(在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 }
和我的persistence.xml:
org.hibernate.ejb.HibernatePersistence net.interaxia.icarus.data.models.ServerNode
和脚本:
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
明确设置注释?
希望这可以帮助.
您可以尝试在persistence.xml中更改此行
至:
这应该保持架构以遵循每次运行应用程序时对模型所做的任何更改.
从JavaRanch得到了这个
有时,取决于配置的设置方式,属性标签的长格式和短格式也会产生差异.
例如,如果你喜欢它:
尝试将其更改为:
create