【发布时间】:2014-02-21 19:53:10
【问题描述】:
我正在使用 hibernate criteria api 来获取 txn 和 txn_products 表的数据。 下面是映射。
类 Txn:
@Entity
@DynamicUpdate(value=true)
@Table(name="txn")
public class Txn
{
@OneToMany(fetch=FetchType.LAZY , mappedBy = "transaction" , cascade = CascadeType.ALL)
Set<TxnProduct> txnProducts = null;
@Id
@Column(name="id" , nullable=false)
private String id;
......
}
类 TxnProduct :
@Entity
@DynamicUpdate(true)
@Table(name="txn_product")
public class TxnProduct
{
@Id
@Column(name="id" , nullable=false)
private String id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="txn_id")
private Txn transaction ;
.....
}
业务逻辑:
Session sx = .......... ;
Criteria Q = sx.createCriteria(Txn.class, "txn");
Q.createAlias("txn.txnProducts", "txnProducts" , JoinType.INNER_JOIN);
List<Txn> L = (List<Txn>) Q.list();
logger.info(L) ;
for(Txn T : L)
{
logger.info(T);
logger.info(T.getTxnProducts());
}
sx.close();
在执行业务逻辑时List L 为数据库中的每个TxnProduct 返回Txn 对象,但我期望从休眠标准中返回Txn 对象为txn 表中的每一行并在其中设置Set<TxnProduct> .
我试过Q.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);,但没有用。
谢谢。
【问题讨论】:
标签: java hibernate hibernate-mapping