我知道这个问题已经在stackoverflow上被问过很多次了,我已经把所有的问题都问过了。但对我没什么用。所以我又发这个问题了。我在Postgres有一张桌子。DDL在下面。
CREATE TABLE APPUSERMASTER (
USER_ID BIGSERIAL NOT NULL,
USER_NAME VARCHAR(20) NOT NULL,
FIRST_NAME VARCHAR(20) NOT NULL,
SECOND_NAME VARCHAR(20) NOT NULL,
EMAIL VARCHAR(50) NOT NULL,
PASSWORD TEXT NOT NULL,
PRIMARY KEY (USER_ID)
) ;
我的POJO类在下面。
@Entity
@Table(name = "appusermaster", schema = "public")
public class UserMaster implements java.io.Serializable {
private long userId;
private String userName;
private String firstName;
private String secondName;
private String email;
private String password;
public UserMaster() {
}
@Id
@Column(name = "user_id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getUserId() {
return this.userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
@Column(name = "user_name", nullable = false, length = 20)
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name = "first_name", nullable = false, length = 20)
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name = "second_name", nullable = false, length = 20)
public String getSecondName() {
return this.secondName;
}
public void setSecondName(String secondName) {
this.secondName = secondName;
}
@Column(name = "email", length = 50)
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(name = "password", length = 20)
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
在我的DAO类中,我有以下代码。
public UserMaster getUserByUserName(String userName) {
Criteria criteria = getSession().createCriteria(UserMaster.class);
criteria.add(Restrictions.eq("userName", userName));
UserMaster userMaster = (UserMaster) criteria.uniqueResult();
return userMaster;
}
但每当我执行这段代码时,我就会得到异常值以下的值。
[WARN ] 2017-07-18 18:24:23.105 [http-bio-8181-exec-9] SqlExceptionHelper - SQL Error: 0, SQLState: 42703
[ERROR] 2017-07-18 18:24:23.110 [http-bio-8181-exec-9] SqlExceptionHelper - ERROR: column this_.user_id does not exist
Position: 8 org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Caused by: org.postgresql.util.PSQLException: ERROR: column this_.user_id does not exist
Position: 8
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2412)
我打开了hibernate的show sql属性,下面是sql正在生成。
Hibernate:
select
this_.user_id as user_id1_0_0_,
this_.email as email4_0_0_,
this_.first_name as first_na5_0_0_,
this_.password as password6_0_0_,
this_.second_name as second_n7_0_0_,
this_.user_name as user_nam9_0_0_
from
public.appusermaster this_
where
this_.user_name=?
[WARN ] 2017-07-18 19:22:40.797 [http-bio-8181-exec-12] SqlExceptionHelper - SQL Error: 0, SQLState: 42703
[ERROR] 2017-07-18 19:22:40.814 [http-bio-8181-exec-12] SqlExceptionHelper - ERROR: column this_.user_id does not exist
Position: 8
日志显示的生成SQL正在从名为“usermaster”而不是“appusermaster”的表中选择记录
看起来它没有选择@table注释。如果您在java中更改了表的名称,可能是因为您的类文件已经过时,并且仍然引用旧的名称。
我实习要做一个Grails 3.3.0 web界面,用PostgreSQL版做数据库,spring-security-core 3 . 2 . 0版。我使用42.1.4版作为PostgreSQL的JDBC驱动程序。 我已经在我的Linux笔记本电脑上安装了PostgreSQL,并使用用户postgres创建了webInterfaceDev数据库。 然而,每次我想开始这个项目时,我都得到一个错误,即
我已经能够将PostgreSQL链接到Java。我已经能够显示表中的所有记录,但我无法执行删除操作。 下面是我的代码: 请注意,MAC是一个字符串字段,用大写字母书写。表中确实存在此字段。 我得到的错误是: 严重:错误:“Mac”列不存在
块(2个级别)in 'tasks:TOP=>db:migrate(请参阅通过运行任务与--trace进行完整跟踪) 我不知道这怎么可能,因为在方案文件中我没有张贴表。
:“查询执行失败。原因: SQL错误[42P01]:错误:关系”temp_table“存在。 不存在” 我想创建一个临时表来临时存储一些记录。
问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL