【发布时间】:2019-07-31 04:31:39
【问题描述】:
我已经实现了与 Asset、Patient、Staff 的任何关系标签实体映射
我在JPQL Query下面试过
em.createQuery("select t from Tag t join t.tagAssociation ta");
我收到以下错误
org.hibernate.hql.internal.ast.QuerySyntaxException: An AnyType attribute cannot be join fetched error
查询有什么问题? 如何编写连接查询,我想获取资产和标签关联列表。
代码:
public interface ITagAssociatable {
public String getName();
}
@Entity
public class Tag {
@Id
private String tagSerialNumber;
@JsonIgnore
@Any(metaColumn = @Column(name = "tag_association_type"))
@AnyMetaDef(idType = "long", metaType = "string", metaValues = {
@MetaValue(targetEntity = Asset.class, value = "Asset"),
@MetaValue(targetEntity = Staff .class, value = "Staff"),
@MetaValue(targetEntity = Patient.class, value = "Patient") })
@Cascade({ org.hibernate.annotations.CascadeType.MERGE })
@JoinColumn(name = "tag_association_id")
private ITagAssociatable tagAssociation;
}
@Entity
public class Asset implements ITagAssociatable {
@Id
private Long id;
private String name
}
@Entity
public class Staff implements ITagAssociatable {
@Id
private Long id;
private String name;
}
@Entity
public class Patient implements ITagAssociatable{
@Id
private Long id;
private String name
}
【问题讨论】:
-
如果您输入:
em.createQuery("select t from Tag t join t.tagAssociation ta", Tag.class);,会发生什么?
标签: java spring hibernate jpa jpql