【问题标题】:java.lang.ClassCastException using JPA Queriesjava.lang.ClassCastException 使用 JPA 查询
【发布时间】:2018-06-19 13:36:45
【问题描述】:

我正在尝试创建 Java EE Web 应用程序,但我无法从数据库中获取单个结果。获取结果列表不是问题。

    public UserCredentialsDTO findByUsernameAndPassword(String username, String password) {
        EntityManager em = getEntityManager();
        TypedQuery<UserCredentialsDTO> q = em.createNamedQuery("UserCredentialsDTO.findByUsernameAndPassword", UserCredentialsDTO.class);
        //Query q = em.createNamedQuery("UserCredentialsDTO.findByUsernameAndPassword", UserCredentialsDTO.class);
        q.setParameter("un", username);
        q.setParameter("pw", password);
        UserCredentialsDTO r = null;
        try{
            r = q.getSingleResult();                       //This line is a problem
            //r = (UserCredentialsDTO)q.getSingleResult(); 
        } catch(javax.persistence.NoResultException e) {

        }

        return r;
    }

同时使用 Query 和 TypedQuery 会抛出 java.lang.ClassCastException

java.lang.ClassCastException: wipb.jee.clientdemo.model.UserCredentialsDTO cannot be cast to wipb.jee.clientdemo.model.UserCredentialsDTO

编辑

UserCredentialsDTO:

@NamedQueries(
        {@NamedQuery(name = "UserCredentialsDTO.findByUsernameAndPassword", query = "select uc from UserCredentialsDTO uc where uc.username=:un and uc.password=:pw")}
)
@Entity
@Table(name="USERCREDENTIALS", schema="APP")
public class UserCredentialsDTO implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    @OneToMany(mappedBy = "userCredentials", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
    private List<UserGroupDTO> userGroups =  new LinkedList<>();

//getters and setters

    public void add(UserGroupDTO userGroup) {
        userGroup.setUserCredentials(this);
        this.userGroups.add(userGroup);
    }

    public List<UserGroupDTO> getUserGroups() {
        return userGroups;
    }


}

【问题讨论】:

  • 您能发布 UserCredentialsDTO 的代码吗?也许对你有用。
  • 如您所愿编辑

标签: java jpa jakarta-ee


【解决方案1】:

这看起来像是一个环境问题,其中 JPA 和应用程序的其余部分使用了不同的类加载器。

Refer to this thread

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 2011-10-16
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多