Hibernate 使用JPQL的MySQLSyntaxErrorException;式中,类型(x)=x“;
我有一个抽象的兽医课程:Hibernate 使用JPQL的MySQLSyntaxErrorException;式中,类型(x)=x“;,hibernate,jpql,Hibernate,Jpql,我有一个抽象的兽医课程: @Entity @Table(name = "vet") @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "vet_type") public abstract class Vet implements Serializable { @Id @Column(name = "vet_id")
@Entity
@Table(name = "vet")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "vet_type")
public abstract class Vet implements Serializable {
@Id
@Column(name = "vet_id")
@TableGenerator(name = "idGenTable", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_value", pkColumnValue = "vet_id_gen", initialValue = 1)
@GeneratedValue(generator = "idGenTable")
private Integer id;
...
}
然后这两个扩展类,InHouseVet
和ExternalVet
:
@Entity
@Table(name = "in_house_vet")
@DiscriminatorValue("in_vet")
public class InHouseVet extends Vet {
...
}
@Entity
@Table(name = "external_vet")
@DiscriminatorValue("ext_vet")
public class ExternalVet extends Vet {
...
}
Query query = em.createQuery("SELECT v FROM Vet v WHERE TYPE(v) = InHouseVet");
List<Vet> vets = query.getResultList();
以及仅获取InHouseVet中的的查询:
@Entity
@Table(name = "in_house_vet")
@DiscriminatorValue("in_vet")
public class InHouseVet extends Vet {
...
}
@Entity
@Table(name = "external_vet")
@DiscriminatorValue("ext_vet")
public class ExternalVet extends Vet {
...
}
Query query = em.createQuery("SELECT v FROM Vet v WHERE TYPE(v) = InHouseVet");
List<Vet> vets = query.getResultList();
Query Query=em.createQuery(“从Vet v中选择v,其中类型(v)=InHouseVet”);
List vets=query.getResultList();
这导致
原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
“where子句”中的未知列“ext_vet”
有人能看到这里出了什么问题吗?从上面的代码片段中,Hibernate(版本4.3.7最终版)生成以下内容。。(注意第1和第2 when条款中缺少的引号)
据报道,这是一个严重的问题 请您详细说明本准则的目的以及您的期望是什么?谢谢;)您好,Casper,我正在尝试使用WHERE TYPE子句进行查询(而不是直接从InHouseVet中选择)。我期望的是一个InHouseVet类型的Vet列表。您能发布正在执行的实际SQL查询吗?