@Override
 @SuppressWarnings("unchecked")
 public List<ChannelSeverity> retrieveByChannel(ChannelType channelType) {
   return sessionFactory
       .getCurrentSession()
       .createQuery(
           "from ChannelSeverity cs where cs.channelType = :channelTypeId order by cs.numericValue desc")
       .setInteger("channelTypeId", channelType.getId())
       .list();
 }
  @Override
  public ChannelSeverity retrieveByCode(ChannelType channelType, String code) {

    // To avoid case insensitive query in MySQL
    List<ChannelSeverity> channelSeverities =
        (List<ChannelSeverity>)
            sessionFactory
                .getCurrentSession()
                .createQuery(
                    "from ChannelSeverity cs where cs.code = :code "
                        + "and cs.channelType = :channelTypeId")
                .setString("code", code)
                .setInteger("channelTypeId", channelType.getId())
                .list();

    if (channelSeverities == null || channelSeverities.size() == 0) return null;

    for (ChannelSeverity channelSeverity : channelSeverities) {
      if (code.equals(channelSeverity.getCode())) return channelSeverity;
    }

    return null;
  }