我有一个CreditCard域:
class CreditCard {
Long Id
Price value
...
static mapping = {
value type: PriceType,{
column name: "VALUE_AMOUNT"
column name: "VALUE_CURRENCY"
}
}我想要创建一个报告,所以我创建了我的自定义类型:
Type priceTypeLocator = new TypeLocatorImpl(new TypeResolver()).custom(PriceType)而问题是:
def result = getSession().createSQLQuery("select ID, VALUE_AMOUNT, VALUE_CURRENCY from CreditCard")
.addScalar("ID", StandardBasicTypes.LONG)
.addScalar("VALUE_AMOUNT",priceTypeLocator) //this wont work
.addScalar("VALUE_CURRENCY",priceTypeLocator) //this wont work
.setResultTransformer(Transformers.aliasToBean(CreditCard.class))
.list();如何将这两个值(VALUE_AMOUNT和VALUE_CURRENCY)与CreditCard域中的值字段绑定?
发布于 2018-03-22 14:57:52
最后,我使用标准类型和setter进行了解析:
.addScalar('requestedAmountAmo', StandardBasicTypes.BIG_DECIMAL)
.addScalar('requestedAmountCur', StandardBasicTypes.STRING)然后我设定了价格:
void setRequestedAmountAmo(BigDecimal requestedAmountAmo) {
requestedAmount = new Price(amount:requestedAmountAmo, currency: '')
}
void setRequestedAmountCur(String requestedAmountCur) {
requestedAmount.currency = requestedAmountCur
}发布于 2017-10-02 10:08:18
您可以使用此方法:
public static Type getPropertyType(Session session, Class entityClass, String propertyName) {
return session.getSessionFactory().getClassMetadata(entityClass).getPropertyType(propertyName);
}并以这种方式使用:
.addScalar("VALUE_AMOUNT", getPropertyType(session, CreditCard.class, "value_amount_poperty_name"))https://stackoverflow.com/questions/46522955
复制相似问题