Я использую Comparator
для сортировки List<Entity>
по его свойству (типа Date
) в управляемом bean-объекте видимости.
Проблема в том, что я продолжаю получать ClassCastException
следующим образом -
java.lang.ClassCastException: pkg.db.BaseArStatus не может быть приведен к pkg.db.BaseArStatus.
Почему он не может разыграть BaseArStatus
на BaseArStatus
? Это потому что BaseArStatus
это Entity
?
Проблема действительно странная для меня, потому что я не получаю исключение каждый раз . Большинство из них работает нормально (работает без проблем) при сборке и развертывании приложения, но иногда (даже если я делаю то же самое - сборка и развертывание) происходит сбой во время выполнения с ClassCastException
.
Почему это происходит только иногда , а не постоянно? Это потому, что я использую его в управляемом бине?
Вот так выглядит управляемый бин -
@ManagedBean
@ViewScoped
public class MyBean {
@PersistenceContext(unitName = "myPU")
private EntityManager em;
public void myMethod() {
List<BaseArStatus> basList = this.fetchAllBaseArStatus();
Collections.sort(basList, new Comparator<BaseArStatus>() {
@Override
public int compare(BaseArStatus o1, BaseArStatus o2) {
return o1.getMonthDate().compareTo(o2.getMonthDate());
}
});
//...
А сущность BaseArStatus
-
@Entity
@Table(name = "base_ar_status")
@NamedQueries({
@NamedQuery(name = "BaseArStatus.findAll", query = "SELECT b FROM BaseArStatus b")})
public class BaseArStatus implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "month_date")
@Temporal(TemporalType.DATE)
private Date monthDate;
@Basic(optional = false)
@NotNull
@Column(name = "ar_count")
private double arCount;
@Size(max = 50)
@Column(name = "user_id")
private String userId;
@Column(name = "last_update_date")
@Temporal(TemporalType.TIMESTAMP)
private Date lastUpdateDate;
public BaseArStatus() { }
//...