java - 线程中的异常 "main"org.hibernate.exception.SQLGrammarException : ORA-02289: sequence does not exist

标签 java spring oracle hibernate

我正在尝试执行基本的 hibernate 应用程序。但是,我始终收到问题中发布的错误。

下面发布的是我的项目结构enter image description here代码:

下面是 app.java 中的代码

公开课应用{

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    Session session =hibernate_utils.getSessionFactory().openSession();
    session.beginTransaction();
    contact  contact=new contact();
    contact.setFirstname("xxx");
    contact.setLastname("xxx");
    contact.setEmail("xxxxxxx@gmail.com");
    contact.setTelephone("xxxxxxxxxx");
    session.save(contact);
    session.getTransaction().commit();
    System.out.println("saved");
    }

  }

下面发布的是 contact.java 文件中的代码

package net.rishanth.contact.form;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Column;
import static javax.persistence.GenerationType.SEQUENCE;

@Entity
@Table(name = "contacts")
public class contact {

@Id
@GeneratedValue(strategy=SEQUENCE)
@Column(name = "id", unique = true, nullable = false)     
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}

@Column(name = "firstname", nullable = false)
public String getFirstname() {
    return firstname;
}
public void setFirstname(String firstname) {
    this.firstname = firstname;
}
@Column(name = "lastname", nullable = false)
 public String getLastname() {
    return lastname;
}
public void setLastname(String lastname) {
    this.lastname = lastname;
}
@Column(name = "email", nullable = false)
 public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}
@Column(name = "telephone", nullable = false)

public String getTelephone() {
    return telephone;
}
public void setTelephone(String telephone) {
    this.telephone = telephone;
}
private String firstname;
private String lastname;
private String email;
private String telephone;
private Integer id;

} 

下面发布的是服务包中存在的 hiber_utils 类的代码。

package net.rishanth.contact.service;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class hibernate_utils {

private static final SessionFactory sessionfactory= buildSessionFatory();

@SuppressWarnings("deprecation")
private static SessionFactory buildSessionFatory(){
    // TODO Auto-generated method stub

        return new Configuration().configure().buildSessionFactory();



}
public static SessionFactory getSessionFactory()
{

    return sessionfactory;
}
public static void shutdown()
{

    getSessionFactory().close();
}

}

下面是 hibernate.cnfg.xml 文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
 <session-factory>
 <property    
 name="hibernate.bytecode.use_reflection_optimizer">false</property>
 <property   
 name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver
 </property>
 <property   
 name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:XE
 </property>
 <property   name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect
 </property>
 <property name="hibernate.connection.username">system</property>
 <property name="hibernate.connection.password">xxxxx</property>
 <mapping class="net.rishanth.contact.form.contact"></mapping>
 </session-factory>
 </hibernate-configuration>

下面附上我的oracle截图enter image description here

任何帮助将不胜感激。 谢谢!

最佳答案

您已使用 SEQUENCE 作为策略注释了 Contact 实体。但您尚未指定应使用哪个序列。 (我相信这是您可能遇到的错误。如果没有,发布异常堆栈跟踪将会有所帮助。)

在这种情况下,默认情况下,hibernate 会查找名为 hibernate_sequence 的序列,并使用该名称创建一个序列应该会有所帮助。

或者,如果您希望 hibernate 使用您已经创建的序列(例如 your_sequence_name),则进一步限定 @Id 属性(如下所示)应该会有所帮助:

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="mySeq")
@GenericGenerator(name="mySeq", strategy="sequence", 
                parameters={
                        @Parameter(name="sequence_name", value="your_sequence_name")
                })

关于java - 线程中的异常 "main"org.hibernate.exception.SQLGrammarException : ORA-02289: sequence does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048869/

相关文章:

spring - 为什么Spring Boot会生成jar?

java - 使用 @OneToMany 或 @ManyToMany 定位未映射的类(多数据库连接)

SQL oracle - 如何从列中获取最大值,添加一个,格式化它并与更多值连接

java - 如何将数据从数据库表加载到浏览器并将数据更新回数据库?

java - 异步任务突然完成。调试 View 显示线程在 Threadpoolexecutor.runWorker(ThreadpoolExcutr$Worker) 行 :1094 处停止

java - Firebase 实时数据库通常是如何收费的?

spring - 使用 Spring MVC 和 Hibernate 实现分页

sql - Oracle中语句的最大长度是多少

java - 为什么 Android IAP 初始化但不起作用?

java - SourcePollingChannelAdapter 注册 bean