【问题标题】:Hibernate order by Id of child table按子表的 ID 休眠顺序
【发布时间】:2014-05-13 12:08:05
【问题描述】:

我有两个表如下: //TmCategory表

public class TmCategory implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(name="CATEGORY_NAME")
private String categoryName;

@Column(name="OWNER_ID")
private BigInteger ownerId;

//bi-directional many-to-one association to TmCategoryRate
@OneToMany(mappedBy="tmCategory", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@javax.persistence.OrderBy("startDate ASC")
private Set<TmCategoryRate> tmCategoryRates;
//getters and setters

 }

//TmCategoryRates 表

@Entity
@Table(name="tm_category_rates")
public class TmCategoryRate implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(name="CREATED_BY")
private BigInteger createdBy;

@Column(name="CREATED_DATE")
private Timestamp createdDate;

@Column(name="END_DATE")
private Timestamp endDate;

@Column(name="RATE")
private Double rate;

@Column(name="RATE_TYPE")
private String rateType;

@Column(name="START_DATE")
private Timestamp startDate;

//bi-directional many-to-one association to TmCategory
@ManyToOne
@JoinColumn(name="CATEGORY_ID")
private TmCategory tmCategory;
 //getters and setters.....

 }

这是用于获取类别的独立标准

        DetachedCriteria criteria = DetachedCriteria.forClass(TmCategory.class);
        criteria.add(Restrictions.eq("id", catId));
        DetachedCriteria criteria1 =criteria.createCriteria("tmCategoryRates");
        criteria1.addOrder(Order.asc("id"));
        List<TmCategory> categories = getHibernateTemplate().findByCriteria(criteria);

在这里,我尝试按其 ID 的升序对 tmCategoryRates 进行排序。 如果该类别至少有一个 tmCategoryRates 可用,我可以获得类别。如果没有可用的 tmCategoryRates,则返回 null 而不是返回带有 tmCategoryRates 的类别。

【问题讨论】:

    标签: mysql hibernate hql


    【解决方案1】:

    如果您需要左联接的类别可能没有费率。目前尚不清楚您为什么在此处使用 DetachedCriteria,但请参阅 Hibernate 文档中的此示例

        List cats = session.createCriteria( Cat.class )
            .createAlias("mate", "mt",
                 Criteria.LEFT_JOIN,Restrictions.like("mt.name", "good%") )
                       .addOrder(Order.asc("mt.age"))
                       .list();
    

    Hibernate 3.5 -- 16.4 Associations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 2011-07-16
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多