sql >> データベース >  >> RDS >> Mysql

2つのテーブルをHibernateで結合し、すべてのレコードをフェッチしますか?

    ORM を使用する場合は、Javaオブジェクトの観点から考える必要があります。 ツール。

    あなたの質問から、あなたが書き込もうとしているクエリは次のようになると思います:

    public List<Category> getCategoryList(int id) {
        List<Category> groupList;
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery("select c from Category c join fetch c.events where c.parentCategory.categoryId = 1");
        //query.setParameter("id", id);
        groupList = query.list();
        return groupList;
    }
    

    ORMを使用する利点の1つは、完全な結合クエリを実行できることです。

    これを機能させるには、クラスモデルを次のように更新する必要があります。

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.*;
    
    @Entity
    @Table(name = "events")
    public class Event implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "event_id")
        private int eventId;
    
        @Column(name = "event_name")
        private String eventName;
    
        @Column(name = "event_description")
        private String eventDescription;
    
        @ManyToOne
        @JoinColumn(name = "category_i")
        private Category category;
    
        @Column(name = "is_trending_event")
        private Integer isTrendingEvent;
    
        @Column(name = "image_url")
        private String imageUrl;
    
        private Integer status;
    
        @Column(name = "created_date")
        @Temporal(javax.persistence.TemporalType.DATE)
        private Date createdDate;
    
        @Column(name = "last_updated_date")
        @Temporal(javax.persistence.TemporalType.DATE)
        private Date lastUpdatedDate;
    
        ...
    
    }
    

    および

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.*;
    
    @Entity
    @Table(name = "category")
    public class Category implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "category_id")
        private int categoryId;
    
        @Column(name = "category_name")
        private String categoryName;
    
        @ManyToOne
        @JoinColumn(name="parent_category_id")
        private Category parentCategory;
    
        @Column(name = "created_date")
        @Temporal(javax.persistence.TemporalType.DATE)
        private Date createdDate;
    
        @Column(name = "last_updated_date")
        @Temporal(javax.persistence.TemporalType.DATE)
        private Date lastUpdatedDate;
    
        @OneToMany(mappedBy="category")
        private List<Event> events;
    
        ...
    
    }
    


    1. Railsの移行テーブルの主キーを作成

    2. OracleSQLの営業時間に基づいて時間を計算する

    3. /etc/mysql/my.cnfの変更後にMySQLコンテナがクラッシュします。編集し直す方法は?

    4. SQLデータの検出と分類