Mysql JPA-HIBERNATE:如何使用JPQL的键/值语法选择映射属性的键/值
我有以下具有相应getter/setter的实体:Mysql JPA-HIBERNATE:如何使用JPQL的键/值语法选择映射属性的键/值,mysql,hibernate,jpa,jpql,Mysql,Hibernate,Jpa,Jpql,我有以下具有相应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;
@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
}
我得到以下错误:
原因:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个
SQL语法错误;检查与您的产品相对应的手册
MySQL服务器版本,以便在附近使用正确的语法
第1行的“KEY(videoinven1.COPIES\u IN\u STOCK)=1”
此外,对于包含键/值/条目语法的查询的每个变体,我都会遇到不同类型的错误
我正在使用JPA,Hibernate和Mysql作为数据库提供程序。我找不到这个问题的答案,因此我非常感谢您的帮助。您似乎将
键(m)
(这是一部电影
)的返回值与一个数字进行了比较
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();