Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql JPA-HIBERNATE:如何使用JPQL的键/值语法选择映射属性的键/值_Mysql_Hibernate_Jpa_Jpql - Fatal编程技术网

Mysql JPA-HIBERNATE:如何使用JPQL的键/值语法选择映射属性的键/值

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;

我有以下具有相应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
}
我得到以下错误:

原因: 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();