小编Roh*_*hit的帖子

Hibernate Criteria Transformers.aliasToBean没有填充正确的值

我试图通过加入我的实体类来创建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 []时,我可以看到获取的正确值请指导我...

hibernate hibernate-criteria

7
推荐指数
1
解决办法
2万
查看次数

Hibernate Criteria Query 添加了一个额外的 order by 子句

我有一个带有投影和转换器的 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)

有人可以指导我解决问题吗

hibernate

5
推荐指数
0
解决办法
676
查看次数

使用 jaxb 验证复杂对象中的嵌套对象

我有一个像 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)

任何帮助将不胜感激。

java jaxb jaxb2 jaxb2-basics

3
推荐指数
1
解决办法
2747
查看次数

标签 统计

hibernate ×2

hibernate-criteria ×1

java ×1

jaxb ×1

jaxb2 ×1

jaxb2-basics ×1