Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JPA查询的java.lang.ClassCastException_Java_Jpa_Jakarta Ee - Fatal编程技术网

使用JPA查询的java.lang.ClassCastException

使用JPA查询的java.lang.ClassCastException,java,jpa,jakarta-ee,Java,Jpa,Jakarta Ee,我正在尝试创建JavaEEWeb应用程序,但从数据库中获取单个结果时遇到问题。获取结果列表不是问题 public UserCredentialsDTO findByUsernameAndPassword(String username, String password) { EntityManager em = getEntityManager(); TypedQuery<UserCredentialsDTO> q = em.createNam

我正在尝试创建JavaEEWeb应用程序,但从数据库中获取单个结果时遇到问题。获取结果列表不是问题

    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;
    }
编辑

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;
    }


}
@namedquerys(
{@NamedQuery(name=“UserCredentialsDTO.findByUsernameAndPassword”,query=“从UserCredentialsDTO uc中选择uc,其中uc.username=:un和uc.password=:pw”)}
)
@实体
@表(name=“USERCREDENTIALS”,schema=“APP”)
实现可序列化的公共类UserCredentialsDTO{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
私有字符串用户名;
私有字符串密码;
@OneToMany(mappedBy=“userCredentials”,cascade=CascadeType.ALL,fetch=FetchType.EAGER,orphan=true)
private List userGroups=new LinkedList();
//接球手和接球手
public void add(UserGroupDTO userGroup){
userGroup.setUserCredentials(此);
this.userGroups.add(userGroup);
}
公共列表getUserGroups(){
返回用户组;
}
}

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


您能将用户证书的代码发布到吗?也许对你有帮助。按你的意愿编辑
@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;
    }


}