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