2016-04-06 19 views
0

私の休止状態のクエリはそうです。Hibernate SQLエラー:1064、SQLState:42000

@Override 
    public List<Userdata> getUserDataWithUserType(String userName) { 
     List<Userdata> africanContinents = getSession().createSQLQuery(
       "from userdata cont join cont.usertype ctry " 
       + "where cont.userName = '" + userName + "") 
       .list(); 
     return africanContinents; 
    } 

しかし、私の方法は、システムを実行して、エラーメッセージに私はそれを解決する方法

SQL Error: 1064, SQLState: 42000 
ERROR: You have an error in your SQL syntax; 

を与えるだろう。 ***上記のコードは、2つのテーブルの作成結合操作に使用されます。 ** myuserdataクラスあなたは、基礎となるデータベースの生のSQLクエリを実行しているcreateSQLQuery()使用する場合

@Entity 
@Table(name="userdata") 
public class Userdata implements java.io.Serializable { 
    private Integer userId; 
    private Usertype usertype; 
    private String firstName; 
    private String lastName; 
    private String userName; 
    private String passWord; 
    private String email; 
    private String tleNo; 
    private Date birthDay; 
    private String department; 
    private String image; 
    private Boolean checkBy; 

    public Userdata() { 
    } 


    public Userdata(Usertype usertype) { 
     this.usertype = usertype; 
    } 


    //get set method 
} 
+0

あなたは_show \ _sql_あなたはHibernateが生成されたSQL文を確認することができます_真_するプロパティを休止状態に設定した場合。その後、手で文を実行しようとします。声明であなたが間違っているように見えます。あなたは単一の終値を見落としています。 'cont.userName = '" + userName + "'" ' – Seego

答えて

1

です。しかし、使用している構文は生のSQLではなくHQLであると思われますので、createSQLQuery()の代わりにcreateQuery()を使用することを想定しています。このコードを試してください:あなたは私もWHERE句にパラメータを設定するsetParameterを使用していることがわかります

@Override 
public List<Userdata> getUserDataWithUserType(String userName) { 
    List<Userdata> africanContinents = getSession().createQuery(
     "from Userdata cont where cont.userName = :userName") 
     .setParameter("userName", userName) 
     .list(); 
    return africanContinents; 
} 

。これはSQLインジェクションに対する予防措置であり、このドキュメントを参照してください。

+0

Warning:StandardWrapperValve [dispatcher]:ServletディスパッチャーのServlet.service()が例外を投げた org.hibernate.hql.internal.ast.QuerySyntaxException:ユーザーデータがマップされていません –

+0

ポストあなたの 'Userdata'クラスUserdataのでjava.io.Serializableを実装 –

+0

パブリッククラス{ プライベート整数のuserId;。 プライベートUSERTYPEのユーザタイプ; プライベート文字列firstNameの; プライベート文字列lastNameの、 プライベート文字列のuserName; プライベート文字列のパスワード、 –

0

try this. Explanation will be added soon.

Query q = getSession().createQuery(
       "from userdata cont cont.usertype where cont.userName =: userName"); 
q.setParameter("userName","kumar"); 

List<Userdata> africanContinents = query.list(); 
+1

参加は必要ありません。 –

+0

@TimBiegeleisen I削除されました。ありがとう。 –

関連する問題