2016-04-18 32 views
0
public ChatRoomUserHelper isUserSubscribe(){ 
    Transaction transaction = null; 
    ChatRoomUserHelper userHelper = null; 
    try (Session session = HibernateUtil.getSessionFactory().openSession()) { 
     transaction = session.beginTransaction(); 
     userHelper = (ChatRoomUserHelper) session.createSQLQuery("SELECT * FROM CHATROOM_USERHELPER WHERE CHAT_ROOMNAME ='chatdlya3uuid' AND USER_NICKNAME ='nikita555' and STATUS = 'subscribe'"). 
       addEntity(ChatRoomUserHelper.class); 
     session.getTransaction().commit(); 
    }catch (RuntimeException e){ 
     if(transaction!=null){ 
      transaction.rollback(); 
     } 
     e.printStackTrace(); 
    } 
    return userHelper; 
} 

これは、ハードコードされたChatRoomUserHelperオブジェクトを返す私のメソッドです。 私のプロジェクトPOJOクラスChatRoomUserHelperです。HibernateネイティブSQLクエリが正常に動作しない

@Entity 
@Table(name = "CHATROOM_USERHELPER") 
@Embeddable 
@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class ChatRoomUserHelper { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
public int id; 
@Column(name = "CHAT_ROOMNAME") 
private String chatRoomName; 
@Column(name = "USER_NICKNAME") 
private String userNickName; 
@Column(name = "STATUS") 
private String userStatus; 

public ChatRoomUserHelper(String chatRoomName,String userNickName){ 
    this.chatRoomName = chatRoomName; 
    this.userNickName = userNickName; 
    this.userStatus = "subscribe"; 
} 

public ChatRoomUserHelper(){} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getChatRoomName() { 
    return chatRoomName; 
} 

public void setChatRoomName(String chatRoomId) { 
    this.chatRoomName = chatRoomId; 
} 

public String getUserNickName() { 
    return userNickName; 
} 

public void setUserNickName(String userNickName) { 
    this.userNickName = userNickName; 
} 

public String getUserStatus() { 
    return userStatus; 
} 

public void setUserStatus(String userStatus) { 
    this.userStatus = userStatus; 
} 

} My Table with rows 私はIntellijIdeaとMySQLワークベンチでこのメソッドを実行すると、それが正常に動作します。

MySQL Workbench

しかし、私はプログラムの中で、このメソッドを使用する場合、それは私が他のすべてのために、その上のセッションファクトリーとの初期化中にその問題を知らない

を私が欲しいと仕事をしたいとロールバックしません。ものはうまく動作します。このクエリでの問題が、私はこの問題を解決する方法がわからない

2016-04-18 13:24:52 DEBUG TransactionImpl:51 - begin 
    2016-04-18 13:24:52 DEBUG TransactionImpl:86 - rolling back 
    2016-04-18 13:25:14 DEBUG DriverManagerConnectionProviderImpl:49 -  Connection pool now considered primed; min-size will be maintained 

それは私があなたの代わりにこのラインを試してみたいことがあり

答えて

0

を取得し、すべてのログのだ:

userHelper = (ChatRoomUserHelper) session.createSQLQuery("SELECT * FROM CHATROOM_USERHELPER c WHERE c.CHAT_ROOMNAME ='chatdlya3uuid' AND c.USER_NICKNAME ='nikita555' and c.STATUS = 'subscribe'").addEntity("c", ChatRoomUserHelper.class); 

・ホープ、この助けて!

+0

残念ながらそれは私を助けません( –

+0

ここでキャッチした 'StackTrace'を共有できますか? – ayoub