2016-05-12 8 views
-1

せずにテーブルからデータをフェッチ:私はフィールドやデータを以下しているMySQLデータベースのテーブルを持っている主キー

enter image description here

ここでidが主キーであり、その生成はautoです。私の質問は、projectIdを通じてメンバーを取得することです。休止状態での私のクエリは次のとおりです。

Query query=session.createQuery("from ProjectMemberDTO P where P.projectId=:pid"); 
query.setParameter("pid", pid); 

と仮定pidが、私はつまり、私は

harindermo 
harindermo 
harindermo 

が、ときに私を取得しています、テーブルの最初の結果にPIDの数と同数の時間を49を取得していますされます私のMYSQL WorkBenchでこのクエリを実行すると、正しい結果が得られます。

@Entity 
    @Table(name="projectmember") 
    public class ProjectMemberDTO { 

     @Id 

     @Column(name="projectId") 
     int projectId; 
     @Column(name="id") 
     int id; 
     public int getId() { 
      return id; 
     } 
     public void setId(int id) { 
      this.id = id; 
     } 
     @Column(name="member") 
     String member; 
     @Column(name="status") 
     String status; 

     public int getProjectId() { 
      return projectId; 
     } 
     public void setProjectId(int projectId) { 
      this.projectId = projectId; 
     } 
     public String getMember() { 
      return member; 
     } 
     public void setMember(String member) { 
      this.member = member; 
     } 
     public String getStatus() { 
      return status; 
     } 
     public void setStatus(String status) { 
      this.status = status; 
     } 
    } 

これは、以下に示すように、あなたは非常によく、ネイティブSQLクエリを書くことができ、私のProjectMemberDTO

+0

このHQLorネイティブSQLです。このクエリは、休止状態のクエリではほとんど起こりそうにないためです。 –

+0

そのHQLクエリの実際の構文は –

+0

です。query query = session.createQuery( "ProjectMemberDTO P from P.projectId =:pid"); \t \t \t query.setParameter( "pid"、pid); –

答えて

0

です:

String sql = "SELECT * FROM ProjectMemberDTO WHERE projectId = :projectId"; 
SQLQuery query = session.createSQLQuery(sql); 
query.setParameter("projectId", projectId); 
List results = query.list(); 
+0

@Harinder shankarshの解決策は正しいです。また、hibernet.cfg.xmlでshow_sqlを有効にし、HQLから生成されたクエリを確認する必要があります。これはあなたのクエリと間違ってpojo構造体の間違いを識別するのに役立ちます。答えの – Ketan

+0

ProjectMemberDTOはデータベースの名前です。 –

+0

実際にはテーブルにバインドされているクラス –

関連する問題