2017-07-18 2 views
2

Ich weiß, dass diese Frage viele Male auf stackoverflow gestellt wurde und ich alle durchlaufen habe. Aber nichts hat für mich funktioniert. Ich poste diese Frage erneut. Ich habe einen Tisch in Postgres. DDL ist unten.Ruhezustand: PSQLException: Fehler: Spalte "this_.user_id" existiert nicht

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) 
) ; 

Meine POJO-Klasse ist unten.

@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; 
} 

} 

In meiner DAO-Klasse habe ich unter dem Code.

public UserMaster getUserByUserName(String userName) { 
    Criteria criteria = getSession().createCriteria(UserMaster.class); 
    criteria.add(Restrictions.eq("userName", userName)); 
    UserMaster userMaster = (UserMaster) criteria.uniqueResult(); 
    return userMaster; 
} 

Aber immer wenn ich diesen Code ausführe, komme ich unter Ausnahme.

[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) 

Was mache ich falsch? Hibernate-Version ist 5.1.8.Final. Frühlingsversion ist 4.3.5.

Ich schaltete Show-SQL-Eigenschaft von Winterschlaf und unterhalb sql wird generiert.

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 
+1

Vielleicht ist es ein dummer Vorschlag, aber versuchen Sie 'return this.userId;' durch 'return userId;' zu ersetzen. – Berger

+1

@Berger Das klingt für mich überhaupt nicht dumm. Wenn Sie nach diesem Fehler suchen, sehen Sie normalerweise einen Tabellennamen, der der Spalte vorangestellt ist und nicht gefunden werden kann. –

+0

@Berger Ich habe das von Getter entfernt und es funktioniert nicht. Dank –

Antwort

0

Die generierte SQL, die das Protokoll zeigte, wurde Datensätze aus einer Tabelle mit dem Namen „usermaster“ statt „APPUSERMASTER“

Es sieht aus wie es die @Table Annotation Auswahl Aufnehmen ist. Wenn Sie den Namen der Tabelle in Ihrem Java geändert haben, sind Ihre Klassendateien möglicherweise veraltet und verweisen immer noch auf den alten Namen.

+0

Sorry Tippfehler. korrigiert es. –

+0

@GD_Java Es war kein Cut & Paste? – Gary

+0

Es wurde kopiert (von der Konsole) und dann im Editor (notepad ++) eingefügt, um es richtig zu formatieren, dann kopiere es und füge es hier ein. –

Verwandte Themen