Syntax-Fehler beim Parsen der JPQL: Eine Identifikation variable muss vorhanden sein, mit einer range-Variablen-Deklaration

Beim ausführen dieses Codes:

List<Users> list = em.createQuery("select balance b from Users where b.userName = '" + user_name.getText() +"'", Users.class).getResultList();

Treffe ich diese Fehlermeldung:

Syntax-Fehler beim Parsen der [select balance b from Users where b.userName = 'a'].
[28, 28] Eine Identifizierung variable muss vorhanden sein, mit einer range-Variablen-Deklaration.

Möchte ich zum abrufen der Integer-Saldo aus den Benutzer, dessen name eingegeben wird, der Benutzername "TextField".
Ich bin ein ziemlicher Anfänger auf diesem Thema und das internet gibt komplizierte info. Kann mir bitte jemand freundlicherweise erklären, was falsch ist ?

Teil der Klasse Benutzer

@Entity
@Table(name = "users")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"),
@NamedQuery(name = "Users.findByUserName", query = "SELECT u FROM Users u WHERE u.userName = :userName"),
@NamedQuery(name = "Users.findByBalance", query = "SELECT u FROM Users u WHERE u.balance = :balance"),
@NamedQuery(name = "Users.findByFirstName", query = "SELECT u FROM Users u WHERE u.firstName = :firstName"),
@NamedQuery(name = "Users.findByLastName", query = "SELECT u FROM Users u WHERE u.lastName = :lastName"),
@NamedQuery(name = "Users.findByIban", query = "SELECT u FROM Users u WHERE u.iban = :iban"),
@NamedQuery(name = "Users.findByCharacterSlots", query = "SELECT u     FROM     Users u WHERE u.characterSlots = :characterSlots"),
@NamedQuery(name = "Users.findByLastPayment", query = "SELECT u FROM         Users u WHERE u.lastPayment = :lastPayment"),
@NamedQuery(name = "Users.findByMonthsPayed", query = "SELECT u FROM Users u WHERE u.monthsPayed = :monthsPayed"),
@NamedQuery(name = "Users.findByPassword", query = "SELECT u FROM Users u WHERE u.password = :password"),
@NamedQuery(name = "Users.findByBanned", query = "SELECT u FROM Users u WHERE u.banned = :banned")})
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "user_name")
private String userName;
@Column(name = "balance")
private Integer balance;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "iban")
private String iban;
@Column(name = "character_slots")
private Integer characterSlots;
@Column(name = "last_payment")
@Temporal(TemporalType.DATE)
private Date lastPayment;
@Column(name = "months_payed")
private Integer monthsPayed;
@Column(name = "password")
private String password;
@Column(name = "banned")
private Boolean banned;
@ManyToMany(mappedBy = "usersCollection")
private Collection<Servers> serversCollection;
@ManyToMany(mappedBy = "usersCollection")
private Collection<Characters> charactersCollection;

public Users() {
}

public Users(String userName, Integer balance, String firstName,         String     lastName, String iban, Integer characterSlots, Date lastPayment,     Integer monthsPayed, String password, Boolean banned) {
    this.userName = userName;
    this.balance = balance;
    this.firstName = firstName;
    this.lastName = lastName;
    this.iban = iban;
    this.characterSlots = characterSlots;
    this.lastPayment = lastPayment;
    this.monthsPayed = monthsPayed;
    this.password = password;
    this.banned = banned;
}
Was ist die balance im Verhältnis zu den Nutzern: die Abfrage rechnet mit einer Liste der Benutzer, während das wählen, ist die Angabe Gleichgewicht. Sollte es nicht so etwas wie "Select b from Benutzer u join-u.balance b, wo b ist.userName 'a'"?
Ich habe bearbeitet die Frage, um zu zeigen, einige Users.java
Deine query ist immer noch falsch, wie es sein muss auf der Grundlage der Benutzer-Entität. Was ist die balance, und warum sollte es einen Benutzernamen?
es wurde jetzt bearbeitet

InformationsquelleAutor user3660293 | 2015-10-05

Schreibe einen Kommentar