当前位置: 首页 > 知识库问答 >
问题:

Hibernate的值为“create”的“hbm2ddl.auto”属性没有重新创建表

白博赡
2023-03-14

我正在开发我的第一个简单的Hibernate应用程序。问题的关键是,我已经重命名了persistent类的一个成员(对所有其他部分都做了适当的更改),并重新运行了应用程序。由于在配置xml中为“hbm2ddl.auto”属性分配了“create”值,Hibernate应该在每次运行时创建新表,但它并没有这样做。以下是详细资料:

    public class Event {
    private Long id;

    private String title;
    private Date date;

    public Event() {
        // this form used by Hibernate
    }

    public Event(String title, Date date) {
        // for application use, to create new events
        this.title = title;
        this.date = date;
    }

    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
<hibernate-mapping package="org.hibernate.tutorial.hbm">

<class name="Event" table="EVENTS">
    <id name="id" column="EVENT_ID">
        <generator class="increment"/>
    </id>
    <property name="date" type="timestamp" column="EVENT_DATE"/>
    <property name="title"/>
</class>

除其他外,Hibernate.cfg.xml有以下条目:

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

主类:

public class EventManager {

public static void main(String[] args) {

    EventManager mgr = new EventManager();

    List events = mgr.listEvents();
for (int i = 0; i < events.size(); i++) {
    Event theEvent = (Event) events.get(i);
        System.out.println( "Event: " + theEvent.getTitle() + " Time: " + theEvent.getDate() );
    }

    HibernateUtil.getSessionFactory().close();

}

private List listEvents() {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List result = session.createQuery("from Event").list();
    session.getTransaction().commit();
    return result;
} }

上面的代码按预期工作。为了测试“hbm2ddl.auto”属性,我将事件类中的“title”成员更改为“title1”。并且,更新了setter和getter方法以及所有引用(在映射xml、Event和EventManager类中)。没有任何错误。但是,当我尝试运行应用程序时,我看到以下异常:

List result = session.createQuery("from Event").list();

共有1个答案

秦涵映
2023-03-14

请尝试指定hibernate.hbm2ddl.auto=create,而不只是hbm2ddl.auto=create

这就是文档使用的内容。

 类似资料:
  • 问题内容: 的默认值是多少 在hibernatecfg文件映射中 是否可以删除 从配置文件映射 如果我删除此属性是否会影响我的数据库 ??? 问题答案: 创建SessionFactory时,自动将架构DDL验证或导出到数据库。使用create-drop时,显式关闭SessionFactory时将删除数据库架构。 验证现有模式 更新-创建后仅更新您的架构 每次创建-创建架构

  • 我试图使用导入CSV创建一组标记节点,如下所示: 是这个功能不起作用,还是只限于导入工具而不是语言?

  • 问题内容: 如何设置数据属性而不在jQuery中添加值?我要这个: 我试过了: 其他所有内容似乎都将第二个参数添加为字符串。是否可以只设置没有值的属性? 问题答案: 该功能也是设置器功能。您可以将一个空字符串传递给它。 空字符串将仅创建没有值的属性。

  • 问题内容: 我是Java的新手,并且开始使用Java 。我想做的是为学生创建一个。每个学生都有与其相关的不同属性()。我试图弄清楚如何使用此属性添加新的学生对象。这是我所拥有的: 问题答案: 您需要的是以下内容:

  • Hibernate的property元素具有update、insert属性,根据文档,它声明-http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping-声明属性 update,insert(可选-默认为true):指定映射列应包含在SQL update和/或insert语句中。将两者都设置为f

  • 所以,在大学里,我们正在处理csv文件和流。现在我正在做一些家庭作业,但我已经被困在这个练习中好几天了。我有一个csv文件,其中包含一些关于事故的数据(如事故严重程度、受害者人数等),我有一个函数可以读取该数据并将其转换为事故对象列表(csv拥有的每种数据类型都有一个属性): 我已经将该列表保存在一个对象中,我可以使用调用列表: 现在,我必须制作一个按照标题所说的函数。我认为地图键可以是严重性(这