Comment les utiliser ou de les annoter un mannequin dans un champ JPA bean entité qui n'est pas censé être conservées dans la base de données

J'ai ce code pour la connexion de validation à l'aide d'un Struts2 classe d'action qui appelle un EJB pour LDAP de validation puis si LDAP (informations d'identification) a validé, l'interrogation de la base de données utilisateur pour obtenir le reste des informations de l'utilisateur à l'aide de la JPA bean entité qui agit également comme un POJO. À la différence du nom d'utilisateur, nom d'utilisateur et d'autres informations utilisateur, mot de passe n'est pas stocké dans la base de données, mais pour le bien de la POJO getter et le setter de la méthode que j'ai essayer d'inclure un mannequin champ de mot de passe - pour servir les Struts2 forme d'action.

Le problème, c'est après l'authentification ldap, une exception se produit indiquant que la colonne "mot de passe" n'existe pas dans la base de données (qui n'a jamais été de toute façon!)

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'PASSWORD' in 'field list'
Error Code: 1054
Call: SELECT PERSON_ID, ACTIVE_USER, EMAIL, FIRSTNAME, SURNAME, PASSWORD, FULLNAME, EMPLOYEE_NUMBER FROM xxte_employees WHERE (ACTIVE_USER = ?)
        bind => [john.doe]
Query: ReadAllQuery(name="XxteEmployees.validateLogin" referenceClass=XxteEmployees sql="SELECT PERSON_ID, ACTIVE_USER, EMAIL, FIRSTNAME, SURNAME, PASSWORD, FULLNAME, EMPLOYEE_NUMBER FROM xxte_employees WHERE (ACTIVE_USER = ?)")
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:687)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530)
        at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529)
....

Voici le code à partir de l'entity bean:

public class XxteEmployees implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "ACTIVE_USER")
private String activeUser;
@Column(name = "EMAIL")
private String email;
@Id
@Basic(optional = false)
@Column(name = "PERSON_ID")
private Double personId;
@Column(name = "EMPLOYEE_NUMBER")
private Double employeeNumber;
@Column(name = "FIRSTNAME")
private String firstname;
@Column(name = "SURNAME")
private String surname;
private String fullname;
private String password;
public XxteEmployees() {
}
public XxteEmployees(Double personId) {
this.personId = personId;
}
public String getActiveUser() {
return activeUser;
}
public void setActiveUser(String activeUser) {
this.activeUser = activeUser;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Double getPersonId() {
return personId;
}
public void setPersonId(Double personId) {
this.personId = personId;
}
public Double getEmployeeNumber() {
return employeeNumber;
}
public void setEmployeeNumber(Double employeeNumber) {
this.employeeNumber = employeeNumber;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
//BEGIN: objects not in db
public String getFullname() {
return firstname + ' ' + surname;
}
public void setFullname(String fullname) {
this.fullname = firstname + ' ' + surname;;
}
public String getPassword() {
return sifre;
}
public void setPassword(String password) {
this.password = password;
}
//END: objects not in db

Aucune solution pour cela?

OriginalL'auteur Skyhan | 2010-11-07