Erreur: la valeur de Paramètre ne correspond pas au type attendu

Je suis en train de récupérer un UTILISATEUR à partir de ma base de données à l'aide de l'ID dans la clause where. Cependant, je reçois un message d'erreur et mon programme est un échec.

C'est l'erreur que je reçois lorsque j'exécute mon programme:

ERROR [org.jboss.as.ejb3.invocation] (default task-19) 
JBAS014134: EJB Invocation failed on component CustomerServiceBeanImpl 
for method public abstract package.name.entity.ICustomer 
package.name.bean.CustomerServiceBean.getCustomerById(long): 
javax.ejb.EJBException: java.lang.IllegalArgumentException: 
Parameter value [19533] did not match expected type [package.name.entity.User (n/a)]

Note: [19533] est un test de valeur que j'ai utilisé.

C'est la méthode qui est d'avoir l'erreur dans le CustomerServiceBeanImpl.java:

@Override
public Customer getCustomerById (final long id)
{
    return Customer.getById (this.em, id);
}

C'est la méthode qui est appelée par le composant CustomerServiceBeanImpl:

public static Customer getById (final EntityManager em, final long id)
{
    for (final Customer c : em.createNamedQuery ("Customer.getById", Customer.class)
    .setParameter ("id", id).setMaxResults (1).getResultList ())
    {
        return c;
    }
    return null;
}

La requête de nom est-ce:

@NamedQuery (name = "Customer.getById", 
query = "SELECT o FROM gnf.Customer o WHERE o.user = :id")

Dans le Customer.java la classe elle-même la colonne est celui-ci:

@ManyToOne (fetch = FetchType.LAZY)
@JoinColumn (name = "user_id")
private User         user;

Faire une vérification rapide de ma disquette de réparation d'urgence le "id" de la colonne de mon tableau "clients" a un type de données BIGINT. Cependant, je ne suis pas sûr si ce qui compte. (Base de données PostgreSQL.)

Comment puis-je corriger cette erreur?

OriginalL'auteur CSLearner | 2016-05-20