次のコードを使用してデータを取得しています
Criteria cr = session.createCriteria( JobProcess.class );
cr.createAlias("sendMarcs", "sm");
cr.addOrder( Order.desc( "processedTime") );
cr.addOrder( Order.asc( "sm.ats" ) );
すべてのデータを返しますが、すべてのデータが複数回表示され、 size673
のリストであるべきときにsize のリストを返します99
。なぜそれが起こっているのか分かりません。
はい、休止状態が使用している SQL を確認しましたが、正しいです。
また、エイリアスとその順序を削除すると、データは期待どおりに表示されます。乗算されていませんが、ソートされていません。
JobProcess.java
@Entity
@Table(name = "jobprocess")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class JobProcess {
@Id
@GeneratedValue
private Long id;
@Basic(optional = false)
@Column(length = 20, name="customerid")
private String customerId;
@Basic(optional=false)
@Column(length = 100)
private String ATS;
@Basic(optional=true)
@Temporal(TemporalType.TIMESTAMP)
@Column(name="timeprocessed")
private java.util.Date processedTime;
@Basic(optional=false)
@Column(length = 1)
private String state;
@Column(length = 300)
private String notes;
@Basic(optional = false)
private long nos;
@OneToMany(mappedBy = "jobprocessid")
private Set<SendMarc> sendMarcs = new HashSet<SendMarc>();
// getters and setters
}
SendMarc.java
@Entity
@Table( name = "sendmarc" )
@Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
public class SendMarc
{
@Id
@GeneratedValue
private BigInteger id;
@Basic( optional = true )
private BigInteger marcfileid;
@Basic( optional = false )
private long jobprocessid;
@Basic( optional = false )
@Column( length = 50 )
private String ats;
// getters and setters
}