JPA SELECT查询标识变量错误

JPA SELECT查询标识变量错误,jpa,eclipselink,Jpa,Eclipselink,我想使用eclipselink向我的PostgreSQL数据库发送一个查询,代码如下: Query q = em.createQuery("SELECT U FROM Users U WHERE user_name = '"+user_name.getText()+"'"); 但是,我收到以下错误消息: java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常: 异常描述:编译问题[从用户中选择您,其中user_name='Swen

我想使用eclipselink向我的PostgreSQL数据库发送一个查询,代码如下:

Query q = em.createQuery("SELECT U FROM Users U WHERE user_name = '"+user_name.getText()+"'");
但是,我收到以下错误消息:

java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常: 异常描述:编译问题[从用户中选择您,其中user_name='Swen']。 [28,37]FROM子句中未定义标识变量“user_name”

我该如何解决这个问题

这是我的实体类的一部分:

@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;
@实体
@表(name=“users”)
@XmlRootElement
@命名查询({
@NamedQuery(name=“Users.findAll”,query=“从用户u中选择u”),
@NamedQuery(name=“Users.findByUserName”,query=“从用户u中选择u,其中u.userName=:userName”),
@NamedQuery(name=“Users.findByBalance”,query=“从用户u中选择u,其中u.balance=:balance”),
@NamedQuery(name=“Users.findByFirstName”,query=“从用户u中选择u,其中u.firstName=:firstName”),
@NamedQuery(name=“Users.findByLastName”,query=“从用户u中选择u,其中u.lastName=:lastName”),
@NamedQuery(name=“Users.findByIban”,query=“从用户u中选择u,其中u.iban=:iban”),
@NamedQuery(name=“Users.findByCharacterSlots”,query=“从用户u中选择u,其中u.characterSlots=:characterSlots”),
@NamedQuery(name=“Users.findByLastPayment”,query=“从用户u中选择u,其中u.lastPayment=:lastPayment”),
@NamedQuery(name=“Users.findByMonthsPayed”,query=“从用户u中选择u,其中u.monthPayed=:monthPayed”),
@NamedQuery(name=“Users.findByPassword”,query=“从用户u中选择u,其中u.password=:password”),
@NamedQuery(name=“Users.findByBanned”,query=“从用户u中选择u,其中u.banked=:banked”)}
公共类用户实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@列(name=“user\u name”)
私有字符串用户名;
@列(name=“balance”)
私人整数余额;
@列(name=“first_name”)
私有字符串名;
@列(name=“last_name”)
私有字符串lastName;
@列(name=“iban”)
私人字符串iban;
@列(name=“character\u slots”)
专用整数字符槽;
@列(name=“上次付款”)
@时态(TemporalType.DATE)
私人付款日期;
@列(name=“已付款的月份”)
私人整数月数;
@列(name=“password”)
私有字符串密码;
@列(name=“禁止”)
禁止私隐;
@ManyToMany(mappedBy=“usersCollection”)
私人收集服务器收集;
@ManyToMany(mappedBy=“usersCollection”)
私人收藏特征收藏;

是否愿意共享实体类?因为用户名必须是其中的一个字段,而它似乎不是。请参阅任何JPA教程。您可以将“U.user\U name”作为备选字段,但仍然需要该字段name@NeilStockton我已经编辑了我的问题,所以您的类中没有名为user_name的字段,所以您的JPQL是错误的。请输入“userName”在JPQL中……正如任何JPQL教程所告诉您的那样