2014-09-03 17 views
1

我有一個工作的ORM,並能夠將對象映射到我的數據庫。所以它跑起來了。Hibernate需要映射類/表。已經完成

我已經創建了一個看起來像這樣的網絡服務:

@Stateless 
@Path("user") 
@LocalBean 
public class userFacade { 

@PersistenceContext(unitName = "Fakebook3") 
private EntityManager em; 

public userFacade() { 
    // TODO Auto-generated constructor stub 
} 

public void persistUser(User user){ 
    em.persist(user); 
} 

@GET 
@Path("edit") 
@Produces(MediaType.APPLICATION_JSON) 
public Response editUserInformation(
     @QueryParam("userid") int userid, 
     @QueryParam("jobbText") String jobbText, 
     @QueryParam("intresseText") String intresseText, 
     @QueryParam("bostadText") String bostadText 
     ){ 
    String jobbTextEscaped = StringEscapeUtils.escapeHtml3(jobbText); 
    String intresseTextEscaString = StringEscapeUtils.escapeHtml3(intresseText); 
    String bostadTextEscaped = StringEscapeUtils.escapeHtml3(bostadText); 
    String sql = "UPDATE user SET job=?, interest=?, bostad=? WHERE id="+userid; 
    Query query = em.createQuery(sql); 
    query.setParameter(1, jobbTextEscaped); 
    query.setParameter(2, intresseTextEscaString); 
    query.setParameter(3, bostadTextEscaped); 
    query.executeUpdate(); 

    return Response.status(200).entity("This is a callback message. Handle it!").build(); 
} 

}

我使用的Eclipse的Web服務工具,輸入paramater價值和得到這個錯誤:

13:23:41,184 ERROR [org.jboss.as.ejb3.invocation] (default task-4) JBAS014134: EJB Invocation failed on component userFacade for method public javax.ws.rs.core.Response se.chas.fakebook.facade.userFacade.editUserInformation(int,java.lang.String,java.lang.String,java.lang.String): javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: fakebook.user is not mapped [UPDATE fakebook.user SET user.job=?, user.interests=?, user.bostad=? WHERE id=1] 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:190) [wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final] 
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275) [wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final] 

等等。我試圖創建使用eclipse來映射實體,並將它們放置在與實體相同的文件夾中。

但我仍然得到同樣的例外。我也嘗試將「... facebook.user ...」的sql語句更改爲僅使用「... user ...」

我在做什麼錯了?

我不能在這裏上傳圖片所以這裏配備了一個工程樹一個鏈接:http://imgur.com/4yemPZH

回答

0

您的查詢應該是這樣的:

String sql = "UPDATE User SET job=?, interest=?, bostad=? WHERE id="+userid; 
+0

我試過了同樣的問題 – 2014-09-03 12:08:20

0
Try this : 

更新用戶設置作業=:工作,interest =:interest,bostad =:bostad WHERE id =「+ userid

query.setParameter("job", jobbTextEscaped); 
query.setParameter("interest", intresseTextEscaString); 
query.setParameter("bostad ", bostadTextEscaped); 
+0

It worked bu我現在有一個nullpointerException? :)也plees upvote所以我可以upvote人回答我的問題。謝謝 – 2014-09-03 12:35:58

+0

如果這工作PLZ做upvote答案了。它會幫助我。什麼是空指針?任何細節? – JavaLearner 2014-09-03 12:56:41

+0

發佈空指針異常。你的EntityManager如何設置? – bradleyfitz 2014-09-03 19:05:32