用Java中的Hibernate连接嵌入式Id列

用Java中的Hibernate连接嵌入式Id列,java,hibernate,Java,Hibernate,在我的维护实体类中,我只有类似chartDetailId的数据库。我想通过维护实体类中的这个chartDetailId获取图表实体。但在维护表中,我只有chartDetailId,我没有chartId来加入图表表。我想加入图表表,但我无法加入此表。如何从维护表连接图表表 在我的hibernate代码中,我试图通过维护表中的chartDetailId连接ChartDetail表,如下所示,但没有成功 select t from Maintenance as m left join fetch m.

在我的维护实体类中,我只有类似chartDetailId的数据库。我想通过维护实体类中的这个chartDetailId获取图表实体。但在维护表中,我只有chartDetailId,我没有chartId来加入图表表。我想加入图表表,但我无法加入此表。如何从维护表连接图表表

在我的hibernate代码中,我试图通过维护表中的chartDetailId连接ChartDetail表,如下所示,但没有成功

select t from Maintenance as m
left join fetch m.chartDetailId as chartDetail
在维护类中(我尝试了带有联接列的OneToOne,但在维护表中没有图表属性,我无法联接图表列):

在我的chartDetail类中,我有一个带有embeddedId的复合id,如下所示

@Entity
class ChartDetail{

    @EmbeddedId
    private ChartDetailPK id = new ChartDetailPK()
}
ChartDetailPK类:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
图表类:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
数据库中的我的维护表:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
沙特莱德,

数据库中的我的图表表:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
沙提德

数据库中的我的图表详细信息表:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
沙特莱德, 沙提德

我们不能不使用连接列就连接吗?我的意思是,在这种情况下,只有一个连接列,只是chartDetail而不是chart?我们可以这样做吗

项目环境:

@Embeddable
class ChartDetailPK implements Serializable{
 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CHART_ID",referencedColumnName = "ID")
    Chart chart;

    @Column(name = "CHART_DETAIL_ID",nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_DET_SEQ")
    Long chartDetailId;

equals and hascode methods...
}
@Entity
class Chart{
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "CHART_SEQ")
    @Column(name = "ID",nullable = false)
    private Long id;

other properties and equals and hascode methods..
}
  • 伯纳特4.0.1.1决赛
  • 爪哇6