当前位置: 首页 > 面试题库 >

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

贺元明
2023-03-14
问题内容

我有以下实体类(在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显式设置注释?

希望这可以帮助。



 类似资料:
  • 问题内容: 我有以下实体类(在Groovy中): 和我的persistence.xml: 和脚本: 数据库 Icarus 存在,但当前没有表。我希望Hibernate基于实体类自动创建和/或更新表。我将如何完成? 问题答案: 我不知道离开前线是否会有所作为。 该参考表明,它应该是 值为将会在创建sessionFactory时创建您的表,并保持它们不变。 值为会创建您的表,然后在关闭sessionF

  • 启动程序(启动TomCat)后,模式中没有创建表,但是必须自动创建表“player”。 我检查了Hibernate配置,但找不到问题所在。我尝试将hbm2ddl.auto更改为hibernate.hbm2ddl.auto(也包括创建、创建-删除等),但没有帮助。 如果有什么想法,请告诉我。谢了。 实体类: 存储库类: Hibernate配置: pom.xml的完整项目代码可通过链接:https:/

  • 我好像遇到了NB的问题。我成功地从数据库创建了一个实体类(最初有一些问题,这似乎是NB中的一个bug)。目标是将数据库从某个位置嵌入到应用程序中。步骤和问题解释如下。 资源: ~数据库[TourismDB]包含两个表:“tours”,“tours” ~包:META-INF,toursApp ~文件:persistence.xml,tourss.java,tours.java,tours.java,

  • 试图用hibernate创建表,但它已经创建并删除了。 hibernate.cfg.xml:

  • 在过去的7天里,我一直在为我的MySQL基础开发EER图模型。这是一个相当复杂的模型,有很多连接和属性。现在我知道,如果您在application.properties中使用spring.jpa.hibernate.ddl-auto=更新,Spring Boot会根据您的实体类(包括外键和其他设置)自动创建表,但是在提供良好的凭据后是否可以创建实体类基于表和模式的DataSource对象? 关键是

  • 本文向大家介绍C#实现根据实体类自动创建数据库表,包括了C#实现根据实体类自动创建数据库表的使用技巧和注意事项,需要的朋友参考一下 .Net新手通常容易把属性(Property)跟特性(Attribute)搞混,其实这是两种不同的东西 属性指的类中封装的数据字段;而特性是对类、字段、方法和属性等元素标注的声明性信息 如下代码(Id、Name为User的属性,[DbKey]为Id的特性) 特性分预定