我试图通过加入我的实体类来创建BO
Criteria criteria = session.createCriteria(Report.class,"r");
criteria
.createAlias("template", "t")
.createAlias("constituents", "rc")
.createAlias("rc.entity", "pe")
.createAlias("pe.model", "m")
.createAlias("pe.scenario", "s")
.setProjection(Projections.projectionList()
.add( Projections.property("r.Id"))
.add( Projections.property("t.Typ"))
.add( Projections.property("pe.bId"))
.add( Projections.property("m.model"))
.add( Projections.property("s.decay"))
).setMaxResults(100)
.addOrder(Order.asc("r.Id"))
.setResultTransformer(Transformers.aliasToBean(BO.class));
Run Code Online (Sandbox Code Playgroud)
我得到100个空BO,即所有属性都为null我的BO如下
public class BO implements Serializable {
private static final long serialVersionUID = 1L;
private int Id;
private String Typ;
private String bId;
private String model;
private String decay;
Getters and Setters
Run Code Online (Sandbox Code Playgroud)
.....
当我删除行aliasToBean并迭代Object []时,我可以看到获取的正确值请指导我...
我有一个带有投影和转换器的 DetachedCriteria 查询,如下所示
criteria = DetachedCriteria.forClass(Report.class, "r");
criteria
.createAlias("template", "t")
.createAlias("constituents", "c")
.setProjection(
Projections.projectionList()
.add(Projections.property("r.reportId").as("reportId"))
.add(Projections.property("r.reportNm").as("reportNm"))
.add(Projections.property("t.templateNm").as("templateNm"))
.add(Projections.property("t.templateTyp").as("templateTyp"))
).setResultTransformer(Transformers.aliasToBean(ReportSummary.class));
Run Code Online (Sandbox Code Playgroud)
然后我从会话中获取 Citeria,现在当我尝试动态添加 orderBy 子句时,即
Session session = entityManager.unwrap(Session.class);
Criteria c = criteria.getExecutableCriteria(session);
Order order = sortDirection.equals("ASC")?
Order.asc(orderByColumnName):Order.desc(orderByColumnName);
c.addOrder(order);
Run Code Online (Sandbox Code Playgroud)
生成的查询包含一个额外的 orderBy 子句,即
order by reportId ASC(NOT REQUIRED ADDED AUTOMATICALLY), order by reportNm ASC
Run Code Online (Sandbox Code Playgroud)
有人可以指导我解决问题吗
我有一个像 OrderList(有订单列表)这样的对象的 xml 表示,每个订单都有一个商品列表。
我想验证我的商品,如果无效,我想将它们从订单中删除。如果所有商品都无效,那么我会从订单列表中删除该订单。
我已经能够验证订单列表
JAXBContext jaxbContext = JAXBContext.newInstance("com.jaxb");
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File(XSD));
JAXBSource source = new JAXBSource(jaxbContext, orderList);
Validator validator = schema.newValidator();
DataFeedErrorHandler handler = new DataFeedErrorHandler();
validator.setErrorHandler(handler);
validator.validate(source);
Run Code Online (Sandbox Code Playgroud)
我无法找到验证商品的方法。
就像是
for(Order order: orderList){
for(Commodity commodity: order.getCommodity()){
if(!isCommodityValid(commodity)){
// mark for removal
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。