【发布时间】:2017-07-21 13:31:15
【问题描述】:
异常错误代码
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
TypedQuery<Member> query = em.createQuery("select m from Member m",Member.class);
List<Member> memberList = query.getResultList();
实体类
@Entity
@Table(name="MEMBER")
public class Member {
@Id
@Column(name="MEMBER_ID")
private String id;
@Column(name="USERNAME")
private String username;
@ManyToOne
@JoinColumn(name="TEAM_ID", referencedColumnName = "TEAM_ID")
private Team team;
public Member() {
}
public Member(String id, String username) {
this.id = id;
this.username = username;
}
public String getId() {
return id;
}
public Member setId(String id) {
this.id = id;
return this;
}
public String getUsername() {
return username;
}
public Member setUsername(String username) {
this.username = username;
return this;
}
public Team getTeam() {
return team;
}
public Member setTeam(Team team) {
this.team = team;
team.getMembers().add(this);
return this;
}
@Override
public String toString() {
return "Member{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", team=" + team +
'}';
}
}
异常信息
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 1, column 15 [select m from Member m]
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.10.Final</version>
</dependency>
我不知道为什么会出现这个异常,因为语法看起来不错。我们正在使用 jpa 作为团队项目。但上述问题只针对部分团队成员。不知道是什么环境影响了这样的异常。
我知道 Hibernate 支持 JPQL 标准。
【问题讨论】:
-
stackoverflow.com/questions/33808306/…。你试试这个。你应该省略。选择米
-
看起来您的
Member类未映射。向我们展示您的映射配置。 -
@talex 除了Entity Class的注解还需要什么映射?
-
我想你使用
Spring。您应该配置AnnotationSessionFactoryBean或类似的东西。看这个教程journaldev.com/3524/… -
@talex 不,我没有使用 Spring 框架。 Java EE 模块的 Web 应用程序。