Java org.postgresql.util.PSQLException:错误:关系“clienti_id_seq”不存在
我试图通过制作一个简单的程序来学习hibernate框架,该程序将类客户机推送到postgres上的表中,返回的错误如下:Java org.postgresql.util.PSQLException:错误:关系“clienti_id_seq”不存在,java,spring,hibernate,postgresql,jpa,Java,Spring,Hibernate,Postgresql,Jpa,我试图通过制作一个简单的程序来学习hibernate框架,该程序将类客户机推送到postgres上的表中,返回的错误如下: Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet Caused by: org.postgresql.util.PSQLException: ERROR: the relation "clienti_id_seq" does
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Caused by: org.postgresql.util.PSQLException: ERROR: the relation "clienti_id_seq" does not exist
这是我的数据库PGAdmin抱歉,我不能直接上传图片
这是我们班的客户
这是我的映射文件
谢谢大家的帮助,我不理解这个错误,我想它在生成器的声明中。请尝试将生成器类从sequence更改为identity,然后查看。我想问题是自动生成ID 请参阅以下链接:
pgAdmin以大写字母显示部分序列名称。只使用小写来避免类似的问题。感谢您的回答,但是在我在任何声明中使用小写之后问题仍然存在谢谢您的回答,我阅读了您的链接并尝试更改生成器类,现在org.postgresql.util.psqleException中的错误也发生了更改:错误:relationclienti不存在,但这没有意义,因为关系是由Netbeans的映射文件向导自动生成的,所以我认为它可以看到关系您是在创建自己的模式还是在公共模式中创建表?引用其他架构(公共架构除外)中的表需要在引用表时使用约定schemaname.tablename。我已经解决了问题,错误出现在id列的类型声明中,在postgres上,此列具有序列类型,所以在map clas中我必须给它java.lang.Long类型谢谢大家的帮助!
public class Cliente {
private long clienteId;
private String clienteNome;
private String clienteCognome;
private String clienteTelefono;
private String clienteMail;
private String clientePermesso;
private long clienteCommessa;
public long getClienteId() {
return clienteId;
}
public void setClienteId(long clienteId) {
this.clienteId = clienteId;
}
public String getClienteNome() {
return clienteNome;
}
public void setClienteNome(String clienteNome) {
this.clienteNome = clienteNome;
}
public String getClienteCognome() {
return clienteCognome;
}
public void setClienteCognome(String clienteCognome) {
this.clienteCognome = clienteCognome;
}
public String getClienteTelefono() {
return clienteTelefono;
}
public void setClienteTelefono(String clienteTelefono) {
this.clienteTelefono = clienteTelefono;
}
public String getClienteMail() {
return clienteMail;
}
public void setClienteMail(String clienteMail) {
this.clienteMail = clienteMail;
}
public String getClientePermesso() {
return clientePermesso;
}
public void setClientePermesso(String clientePermesso) {
this.clientePermesso = clientePermesso;
}
public long getClienteCommessa() {
return clienteCommessa;
}
public void setClienteCommessa(long clienteNome) {
this.clienteCommessa = clienteCommessa;
}
}
<hibernate-mapping>
<class name="beans.Cliente" table="Clienti">
<id name="clienteId" type="integer" column="id" >
<generator class="sequence">
<param name="sequence">CLIENTI_ID_seq</param>
</generator>
</id>
<property name="clienteNome" column="nome" type="string">
</property>
<property name="clienteCognome" column="cognome" type="string">
</property>
<property name="clienteTelefono" column="telefono" type="string">
</property>
<property name="clienteMail" column="mail" type="string">
</property>
<property name="clientePermesso" column="permesso" type="string">
</property>
<property name="clienteCommessa" column="commessa" type="string">
</property>
</class>
</hibernate-mapping>
<?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.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql:postgres</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/Georilievi</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">Fabio1990</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping resource="Clienti.hbm.xml"/>
</session-factory>
</hibernate-configuration>
package main;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import beans.Cliente;
public class Main {
public static void main(String [] args){
// Create a configuration instance
Configuration configuration = new Configuration();
// Provide configuration file
configuration.configure("hibernate.cfg.xml");
// Build a SessionFactory
SessionFactory factory = configuration.buildSessionFactory(new StandardServiceRegistryBuilder().configure().build());
// Get current session, current session is already associated with Thread
Session session = factory.getCurrentSession();
// Begin transaction
session.getTransaction().begin();
Cliente cliente = new Cliente();
cliente.setClienteNome("Fabio");
cliente.setClienteCognome("Tramontana");
cliente.setClienteTelefono("3343052346");
cliente.setClienteMail("info.tramontanafabio@gmail.com");
cliente.setClientePermesso("admin");
cliente.setClienteCommessa(0);
// Save*/
session.save(cliente);
// Commit, calling of commit will cause save an instance of employee
session.getTransaction().commit();
}
}