java - hibernate 从子表中选择查询

标签 java hibernate spring-mvc hql hibernate-mapping

我对 hibernate 还很陌生。我有两个具有一对多关系的表。两个表是:

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

这是一个父类,它和Image表是一对多的关系

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;

现在我想使用其父类的 id(即:pashminaId)从 Image 类中选择一个 imagenames

例如:

SELECT IMAGE_NAME FROM TBL_IMAGE WHERE PASHMINA_ID = 'some_digit';

我如何在图像类中传递 pashminaId,因为没有 pashminaId 它只有父类 Pashmina 的对象创建。

那么,我如何在 hibernate 中实现这一点?

如果你不明白我的意思,请告诉我。

谢谢!希望积极响应。

最佳答案

由于 Hibernate 处理对象而不是 SQL 表,您可以简单地从 image 对象访问 pashmina 对象,并且在您的查询中您将处理 java 对象/POJO ,因此您可以通过 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(); 

关于java - hibernate 从子表中选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51038438/

相关文章:

java - 使 javac 将警告视为错误

Hibernate 标准限制 AND/OR 组合

java - 添加swagger lib后,所有响应内容类型更改为application/xml

java - 如何使用 hibernate 将一些实体的值存储在另一个表中?

java - @Id @GeneratedValue 但设置自己的 ID 值

java - Common Pojo - 基于父pojo的动态错误消息 - Spring验证

java - 如何让Spring Security在身份验证成功后调用所请求的资源?

java - 如何在Java中从Ms Access数据库显示jLabel中的行?

java - Jarsigner "Please specify alias name"...但我做到了?

字符串中的 Java 空字符