我有以下实体与相应的getter / setter:
@Entity
public class Movie {
@Id@GeneratedValue
private int id;
private String title;
//getters and setters
}
@Entity
public class VideoStore {
@Id@GeneratedValue
private int id;
private String name;
@ElementCollection
@CollectionTable(name="INVENTORY",joinColumns=@JoinColumn(name="STORE_ID"))
@Column(name="COPIES_IN_STOCK")
@MapKeyJoinColumn(name="MOVIE",referencedColumnName="ID")
Map<Movie,Integer>videoInventory;
//getters and setters
}
从主方法我尝试执行以下JPQL查询:
EntityManagerFactory emf=Persistence.createEntityManagerFactory("Tutorial");
EntityManager em=emf.createEntityManager();
String queryMap1 = "SELECT v " +
"FROM VideoStore v JOIN v.videoInventory m " +
"WHERE KEY(m) = 1";
@SuppressWarnings("rawtypes")
List results= em.createQuery(queryMap1).getResultList();
我收到以下错误:
引起: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本为正确的语法使用附近 第1行的'KEY(videoinven1_.COPIES_IN_STOCK)= 1'
此外,我对包含KEY / VALUE / ENTRY语法的查询的每个变体都会遇到不同类型的错误
我使用JPA与Hibernate和Mysql作为数据库提供者。我找不到这个问题的答案所以我很感激你的帮助。
答案 0 :(得分:0)
您似乎将KEY(m)
(Movie
)的返回值与数字进行比较。