Java Hibernate 5,Oracle12c标识列-未找到序列

Java Hibernate 5,Oracle12c标识列-未找到序列,java,identity,oracle12c,hibernate-5.x,Java,Identity,Oracle12c,Hibernate 5.x,我在尝试将个人记录插入数据库时遇到以下错误 Caused by: java.sql.SQLSyntaxErrorException: ORA-02201: sequence not allowed here 我正在使用Hibernate 5.2.12.Final,Oracle 12 c数据库,并使用数据库中的标识列作为“id” select 1 from dual 工作。因此,我确信DB连接是成功的 以下是配置: DB: 冬眠 public class HibernateUtil { pri

我在尝试将个人记录插入数据库时遇到以下错误

Caused by: java.sql.SQLSyntaxErrorException: ORA-02201: sequence not allowed here
我正在使用Hibernate 5.2.12.Final,Oracle 12 c数据库,并使用数据库中的标识列作为“id”

select 1 from dual
工作。因此,我确信DB连接是成功的

以下是配置:

DB:

冬眠

public class HibernateUtil {
private static StandardServiceRegistry registry;
private static SessionFactory sessionFactory;

public static SessionFactory getSessionFactory() {
    if (sessionFactory == null) {


        StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()
                .configure(new File("path-to-hibernate.cfg.xml"))
                .build();

        Metadata metadata = new MetadataSources(standardRegistry)
                .addAnnotatedClass(Person.class)
                .addAnnotatedClassName("com.example.entity.Person")
                .getMetadataBuilder()
                .applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
                .build();

        sessionFactory = metadata.getSessionFactoryBuilder()
                .build();


    }
    return sessionFactory;
}

public static void shutdown() {
    if (registry != null) {
        StandardServiceRegistryBuilder.destroy(registry);
    }
}
}
个人和实体:

@Entity
@Table(name = "Person")
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

public Person(){}

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

public void setName(String name) {
    this.name = name;
}

public Person(final String name){
    this.name = name;
}

public Long getId() {
    return id;
}

public String getName() {
    return name;
}

@Column(name = "name")
private String name;
}
main():


非常感谢您的帮助。

请改用
GenerationType.IDENTITY
尝试使用
GenerationType.SEQUENCE
,如果没有问题,请告诉我。因为您的代码中除了这一点之外没有任何错误。

更改后,我在日志中得到以下信息:
Hibernate:从dual中选择system.Hibernate\u sequence.nextval
Hibernate:插入system.Person(姓名、id)值(?,)
,但错误仍然存在。此处不允许使用序列。另外,我想使用与“id”相关的标识序列,而不是hibernate_序列。谢谢,你能提供zip文件中的示例代码吗?在非系统用户下创建相同的代码似乎可以解决这个问题。没有进行任何代码更改。
@Entity
@Table(name = "Person")
public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

public Person(){}

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

public void setName(String name) {
    this.name = name;
}

public Person(final String name){
    this.name = name;
}

public Long getId() {
    return id;
}

public String getName() {
    return name;
}

@Column(name = "name")
private String name;
}
Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();

    session.save(new Person("code")); // Error here

    session.getTransaction().commit();
    session.close();

    HibernateUtil.shutdown();