【问题标题】:How to resolve Exception: Table 'DBNAME.hibernate_sequence' doesn't exist如何解决异常:表 'DBNAME.hibernate_sequence' 不存在
【发布时间】:2021-11-07 16:59:52
【问题描述】:

This 回答无效。我仍然遇到同样的异常。

hibernate.cfg.xml

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
  
<property name="hbm2ddl.auto">update</property>
   
<!-- Use Annotation-based mapping metadata -->
<mapping class="entity.Person"/>

这些是我的版本: pom.xml

<dependencies>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.5.6.Final</version>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
</dependencies>

主类

public static void main(String[] args) {
    // HibernateUtil below is my custom Session factory java code
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction txn = session.getTransaction();
    try {
        txn.begin();
        Address address = new Address("200 E Main st", "Seattle", 211004);
        Person person = new Person("Tanzeel Mirza", address);
        
        session.save(person);
        txn.commit();
    }
    catch(Exception e) {
        //roll back code
    }
    finally {
        if(session!=null) {
            session.close();
        }
    }
}

Person.java

...
@Entity
@Table(name="person")
public class Person {
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO) //<----- tried IDENTITY also
    @Column(name="id")
    private long pid;
    
    @Column(nullable=false) 
    private String name;
    
    @Embedded
    private Address address;
    
    // getters and setters and constructor
}

Address.java

@Embeddable
public class Address {
    
    @Column(name="street")
    private String street;

    @Column(name="city")
    private String city;

    @Column(name="zipcode")
    private long zipcode;
    
    // constructors
}

这是完整的日志:

请指出我的错误。

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    我尝试了this 的答案。虽然它不是公认的答案,因为问题与我的完全不同,但它现在有效。

    看起来问题是由于 MySQL 5.x 的 MySQL 版本冲突造成的。

    所以,我应该在 hibernate.cfg.xml 中使用 MySQL5Dialect 而不是 MySQLDialect

    解决方案:

    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    

    就是这样!

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2013-10-13
      • 1970-01-01
      • 2018-01-09
      • 2017-09-15
      • 2017-09-14
      相关资源
      最近更新 更多