休眠 select 来自 child table 的查询
hibernate select query from child table
我对休眠还很陌生。我有两个 table 具有 一对多 关系。两个 table 是:
public class Pashmina implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "sq_pashmina_id")
@SequenceGenerator(name = "sq_pashmina_id", sequenceName = "sq_pashmina_id")
@Column(name = "PASHMINA_ID")
private int pashminaId;
@Column(name = "PASHMINA_NAME")
private String pashminaName;
@Column(name = "PRICE")
private double price;
@Column(name = "ADDED_AT", insertable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date addedAt;
@Column(name = "CATEGORY")
private String category;
@Column(name = "ENABLED", insertable = false)
private Character enabled;
@OneToMany(mappedBy = "colourId", fetch = FetchType.EAGER)
private Set<PashminaColour> pashminaColor = new HashSet<PashminaColour>();
@OneToMany(mappedBy = "imageId", fetch = FetchType.EAGER)
private Set<Image> images = new HashSet<Image>();
@OneToMany(mappedBy = "descriptionId", fetch = FetchType.EAGER)
private Set<Description> descriptions = new HashSet<Description>();
//getter and setter method
这是一个 parent class 并且它与图像具有一对多关系 table
public class Image implements Serializable {
@Id
@Column(name = "IMAGE_ID")
private int imageId;
@Column(name = "IMAGE_NAME")
private String imageName;
@JoinColumn(name = "PASHMINA_ID", referencedColumnName = "PASHMINA_ID")
@ManyToOne
private Pashmina pashmina;
现在我想 select 来自 Image
class 的 imagenames
使用其 parent class 的 ID(即:pashminaId )
例如:
SELECT IMAGE_NAME FROM TBL_IMAGE WHERE PASHMINA_ID = 'some_digit';
我如何在图像 class 中传递 pashminaId 因为没有 pashminaId
它只有 Object 创建 Parent class Pashmina
.
那么,我如何在休眠中实现这个?
如果你不明白我的意思,请告诉我。
谢谢!希望积极响应。
由于 Hibernate 处理对象而不是 SQL 表,您可以简单地从 image
对象访问 pashmina
对象,并且在您的查询中您将处理 java objects/POJOs,因此您可以通过 Image.pashmina.pashminaId
.
访问它
所以你可以编写如下查询:
String hql = "select I.imageName FROM Image I WHERE I.pashmina.pashminaId = 10";
Query query = session.createQuery(hql);
List results = query.list();
我对休眠还很陌生。我有两个 table 具有 一对多 关系。两个 table 是:
public class Pashmina implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "sq_pashmina_id")
@SequenceGenerator(name = "sq_pashmina_id", sequenceName = "sq_pashmina_id")
@Column(name = "PASHMINA_ID")
private int pashminaId;
@Column(name = "PASHMINA_NAME")
private String pashminaName;
@Column(name = "PRICE")
private double price;
@Column(name = "ADDED_AT", insertable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date addedAt;
@Column(name = "CATEGORY")
private String category;
@Column(name = "ENABLED", insertable = false)
private Character enabled;
@OneToMany(mappedBy = "colourId", fetch = FetchType.EAGER)
private Set<PashminaColour> pashminaColor = new HashSet<PashminaColour>();
@OneToMany(mappedBy = "imageId", fetch = FetchType.EAGER)
private Set<Image> images = new HashSet<Image>();
@OneToMany(mappedBy = "descriptionId", fetch = FetchType.EAGER)
private Set<Description> descriptions = new HashSet<Description>();
//getter and setter method
这是一个 parent class 并且它与图像具有一对多关系 table
public class Image implements Serializable {
@Id
@Column(name = "IMAGE_ID")
private int imageId;
@Column(name = "IMAGE_NAME")
private String imageName;
@JoinColumn(name = "PASHMINA_ID", referencedColumnName = "PASHMINA_ID")
@ManyToOne
private Pashmina pashmina;
现在我想 select 来自 Image
class 的 imagenames
使用其 parent class 的 ID(即:pashminaId )
例如:
SELECT IMAGE_NAME FROM TBL_IMAGE WHERE PASHMINA_ID = 'some_digit';
我如何在图像 class 中传递 pashminaId 因为没有 pashminaId
它只有 Object 创建 Parent class Pashmina
.
那么,我如何在休眠中实现这个?
如果你不明白我的意思,请告诉我。
谢谢!希望积极响应。
由于 Hibernate 处理对象而不是 SQL 表,您可以简单地从 image
对象访问 pashmina
对象,并且在您的查询中您将处理 java objects/POJOs,因此您可以通过 Image.pashmina.pashminaId
.
所以你可以编写如下查询:
String hql = "select I.imageName FROM Image I WHERE I.pashmina.pashminaId = 10";
Query query = session.createQuery(hql);
List results = query.list();