Hibernate需要映射类/表。已经完成了

时间:2014-09-03 11:47:35

标签: java hibernate jpa

我有一个工作的ORM,并能够将对象映射到我的数据库。所以它正在运行。

我创建了一个如下所示的网络服务:

@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网络服务工具并输入参数值并收到此错误:

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语句。仅使用" ...用户..."

我做错了什么?

我无法在此处上传图片,因此这里有一个项目树链接:http://imgur.com/4yemPZH

2 个答案:

答案 0 :(得分:0)

您的查询应该是这样的:

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

答案 1 :(得分:0)

Try this :

UPDATE用户SET job =:job,interest =:interest,bostad =:bostad WHERE id =“+ userid

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