Hibernate 插入键定义为EmbeddedBleid的实体的SELECT

Hibernate 插入键定义为EmbeddedBleid的实体的SELECT,hibernate,hql,jpql,Hibernate,Hql,Jpql,我有以下实体,其主键定义为@embeddedableid @Entity public class TeamResult implements Serializable { @EmbeddedId private TeamMatchdayKey primaryKey; @Column(nullable = false) private long matchdayResult; @Column(nullable = false) private

我有以下实体,其主键定义为
@embeddedableid

@Entity
public class TeamResult implements Serializable {
    @EmbeddedId
    private TeamMatchdayKey primaryKey;

    @Column(nullable = false)
    private long matchdayResult;

    @Column(nullable = false)
    private long afterMatchdayResult;

    // ...
}
embedded
class
TeamMatchdayKey
如下所示

@Embeddable
public class TeamMatchdayKey implements Serializable {

    @ManyToOne(optional = false)
    @PrimaryKeyJoinColumn
    private Team team;

    @ManyToOne(optional = false)
    @PrimaryKeyJoinColumn
    private Matchday matchday;

    //...
}
以下HQL查询中使用的
团队
实体的相关部分如下所示

@Entity
public final class Team implements Serializable {
    @Id
    @Column(length = 40)
    private String name = "";

    // ...

    @OneToMany(mappedBy="primaryKey.team", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    @MapKey(name = "primaryKey.matchday")
    @OrderBy("primaryKey.matchday")
    private SortedMap<Matchday, TeamResult> teamResults = new TreeMap<>();

    // ...
}
…然而,它似乎是不正确的,因为它在启动web应用程序时的编译给了我以下异常

org.hibernate.QueryException: could not resolve property:  of: com.example.entities.stats.TeamResult
正如您所看到的,错误消息中没有属性名称,因此我尝试了以下方法

INSERT INTO TeamResult (team, matchday, matchdayResult, afterMatchdayResult)
  SELECT t.team, (SELECT MAX(m) from Matchday m), 0, COALESCE(tr.afterMatchdayResult, 0)
  FROM Team t JOIN t.teamResults tr
  WHERE tr IS EMPTY OR KEY(tr).matchdayNumber = (SELECT MAX(matchdaynumber) - 1 FROM Matchday) ORDER BY tr.afterMatchdayResult DESC, t
。。。然而,这给了我以下信息

org.hibernate.QueryException: could not resolve property: team of: com.example.entities.stats.TeamResult
这条消息对我来说是可以理解的,因为我知道没有
team
属性,但它隐藏在我的嵌入式数据库中


有没有办法定义
INSERT。。。选择HQL/JPQL中的
query,查询主键定义为
@embeddedableid

的实体。您需要按照OOP的方式引用这些属性,就像这样
primaryKey.team
@chsdk,但这是我首先要做的。请仔细阅读问题。你能用
SELECT
部分发布整个查询吗*@chsdk:给你,但我认为问题不在这里,因为这显然是关于
插入TeamResult(
)之后的第一个属性。你也可以发布团队实体的相关部分吗?
org.hibernate.QueryException: could not resolve property: team of: com.example.entities.stats.TeamResult