Java EJB Web服务,实体未映射错误

Java EJB Web服务,实体未映射错误,java,web-services,hibernate,jpa,ejb-3.1,Java,Web Services,Hibernate,Jpa,Ejb 3.1,我有实体类用户 @Entity(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @Column(unique = true, nullable = false) private String email; /** skipped **/ 和无状态EJBDAO类(我使用的是jpa/hibernate)以及方法 @Override

我有实体类用户

@Entity(name = "user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@Column(unique = true, nullable = false)
private String email;

  /** skipped **/
和无状态EJBDAO类(我使用的是jpa/hibernate)以及方法

@Override
public User findByEmail(String name) {
    TypedQuery<User> query = entityManager.createQuery("from User where email= :email", User.class);
    query.setParameter("email", name);
    return query.getSingleResult();
}
我的web服务非常简单:

@Stateless(name = "webServiceBean")
@WebService(serviceName = "webService")
public class MyWebService{

@EJB
private UserDao dao;

public String findUser(String email) {
    return dao.findByEmail(email);
}
}

应用程序部署在JBoss7上。我正在使用EJB3.1和Hibernate4.3 有人知道这个例外的原因吗?为什么它只出现在Web服务中

  • 确保在hibernate配置文件中列出了
    User
    ,以及包名
  • 只使用
    @Entity
    @Entity(name=“User”)
    。您已将实体命名为
    user
    ,但在查询中尝试将其称为
    user

  • 检查
    @实体的
    名称属性

    公共抽象java.lang.String名称

    (可选)实体名称。默认为实体类的非限定名称此名称用于引用查询中的实体。该名称不能是Java持久性查询语言中的保留文字


    在查询中将用户更改为小写已修复问题。谢谢
    @Stateless(name = "webServiceBean")
    @WebService(serviceName = "webService")
    public class MyWebService{
    
    @EJB
    private UserDao dao;
    
    public String findUser(String email) {
        return dao.findByEmail(email);
    }