当使用GORM获取Mongo集合时,没有找到能够从类型java.lang.Double转换为类型java.lang.Long的转换器

时间:2014-05-20 09:36:25

标签: mongodb grails gorm

我的模特是:

package com.apposit.terra.connect.model

import java.util.Date;

import com.apposit.connect.security.User;
import com.apposit.terra.connect.FertilizerTypeEnum
import com.apposit.terra.connect.InputTypeEnum
import com.apposit.terra.connect.model.AbstractDomain

class UnionAllocation extends AbstractDomain {

    static mapWith = "mongo"

    Organization union
    InputTypeEnum inputType
    FertilizerTypeEnum fertilizerType
    CommodityType seedType
    InputCommodityType seedVariety
    Double requestedAmount = 0.0
    Double allocatedAmount = 0.0
    Double deliveredAmount = 0.0
    Double remaining  = 0.0
    Organization supplier
    Date expectedCompletionDate

    Date dateCreated
    Date lastUpdated
    User createdByUser
    User updatedByUser


    static constraints = {
        union(nullable: false )
        inputType(nullable: false)
        fertilizerType( nullable: true, unique: 'union')
        seedType( nullable: true)
        seedVariety( nullable: true, unique: 'union' )
        allocatedAmount( nullable: false)
        supplier( nullable: true)
        requestedAmount( nullable: true)
        createdByUser( nullable: true )
        updatedByUser( nullable: true )
    }

    static mapping = {
        id generator: 'identity'
        sort id: "desc"
    }
}

我的收藏品如下:

/* 0 */
{
    "_id" : NumberLong(14),
    "allocatedAmount" : 450,
    "dateCreated" : ISODate("2014-03-07T05:22:16.832Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-17T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-07T05:25:17.996Z"),
    "remaining" : 400,
    "requestedAmount" : 400,
    "seedType" : NumberLong(4),
    "seedVariety" : NumberLong(122),
    "supplier" : NumberLong(1406),
    "union" : NumberLong(1702),
    "version" : NumberLong(1)
}

/* 1 */
{
    "_id" : NumberLong(15),
    "allocatedAmount" : 800,
    "dateCreated" : ISODate("2014-03-07T14:17:02.006Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-19T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-07T14:17:02.006Z"),
    "remaining" : 800,
    "requestedAmount" : 800,
    "seedType" : NumberLong(4),
    "seedVariety" : NumberLong(109),
    "supplier" : NumberLong(1406),
    "union" : NumberLong(1757),
    "version" : NumberLong(0)
}

/* 2 */
{
    "_id" : NumberLong(17),
    "allocatedAmount" : 12645.5,
    "dateCreated" : ISODate("2014-03-08T17:22:00.053Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-08T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-08T17:24:08.372Z"),
    "remaining" : 126455,
    "requestedAmount" : 12434,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1702),
    "version" : NumberLong(1)
}

/* 3 */
{
    "_id" : NumberLong(19),
    "allocatedAmount" : 2210,
    "dateCreated" : ISODate("2014-03-08T17:27:21.759Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-08T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-08T17:27:21.759Z"),
    "remaining" : 2210,
    "requestedAmount" : 0,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1617),
    "version" : NumberLong(0)
}

/* 4 */
{
    "_id" : NumberLong(20),
    "allocatedAmount" : 21068,
    "dateCreated" : ISODate("2014-03-08T17:29:25.274Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-08T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-08T17:29:25.274Z"),
    "remaining" : 21068,
    "requestedAmount" : 16227,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1664),
    "version" : NumberLong(0)
}

/* 5 */
{
    "_id" : NumberLong(21),
    "allocatedAmount" : 3000,
    "dateCreated" : ISODate("2014-03-10T04:54:30.172Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-30T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-10T04:54:30.172Z"),
    "remaining" : 3000,
    "requestedAmount" : 3000,
    "seedType" : NumberLong(6),
    "seedVariety" : NumberLong(93),
    "supplier" : NumberLong(1406),
    "union" : NumberLong(1430),
    "version" : NumberLong(0)
}

/* 6 */
{
    "_id" : NumberLong(22),
    "allocatedAmount" : 5000,
    "dateCreated" : ISODate("2014-03-11T13:25:09.123Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-21T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-11T13:25:09.123Z"),
    "remaining" : 5000,
    "requestedAmount" : 5000,
    "seedType" : NumberLong(13),
    "seedVariety" : NumberLong(54),
    "supplier" : NumberLong(1406),
    "union" : NumberLong(2076),
    "version" : NumberLong(0)
}

/* 7 */
{
    "_id" : NumberLong(23),
    "allocatedAmount" : 5000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-13T05:34:59.047Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-28T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-13T05:34:59.047Z"),
    "remaining" : 5000,
    "requestedAmount" : 5000,
    "seedType" : NumberLong(4),
    "seedVariety" : NumberLong(110),
    "supplier" : NumberLong(1406),
    "union" : NumberLong(2079),
    "version" : NumberLong(0)
}

/* 8 */
{
    "_id" : NumberLong(24),
    "allocatedAmount" : 1000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-13T06:10:40.031Z"),
    "deliveredAmount" : 300,
    "expectedCompletionDate" : ISODate("2014-05-31T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-25T11:36:51.085Z"),
    "remaining" : 1000,
    "requestedAmount" : 1000,
    "seedType" : NumberLong(6),
    "seedVariety" : NumberLong(94),
    "supplier" : NumberLong(1407),
    "union" : NumberLong(1523),
    "version" : NumberLong(1)
}

/* 9 */
{
    "_id" : NumberLong(25),
    "allocatedAmount" : 6000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-13T08:37:27.129Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-30T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-13T08:37:27.129Z"),
    "remaining" : 6000,
    "requestedAmount" : 12000,
    "seedType" : NumberLong(6),
    "seedVariety" : NumberLong(94),
    "supplier" : NumberLong(1407),
    "union" : NumberLong(1496),
    "version" : NumberLong(0)
}

/* 10 */
{
    "_id" : NumberLong(26),
    "allocatedAmount" : 500,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-13T12:43:47.693Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-30T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-13T12:43:47.693Z"),
    "remaining" : 500,
    "requestedAmount" : 500,
    "seedType" : NumberLong(6),
    "seedVariety" : NumberLong(92),
    "supplier" : NumberLong(1407),
    "union" : NumberLong(1496),
    "version" : NumberLong(0)
}

/* 11 */
{
    "_id" : NumberLong(27),
    "allocatedAmount" : 0,
    "createdByUser" : NumberLong(90),
    "dateCreated" : ISODate("2014-03-13T23:26:00.044Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-08T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-13T23:26:00.044Z"),
    "remaining" : 0,
    "requestedAmount" : 34506,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(2079),
    "version" : NumberLong(0)
}

/* 12 */
{
    "_id" : NumberLong(28),
    "allocatedAmount" : 0,
    "createdByUser" : NumberLong(90),
    "dateCreated" : ISODate("2014-03-13T23:31:04.347Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-08T21:00:00.000Z"),
    "fertilizerType" : "UREA",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-13T23:31:04.347Z"),
    "remaining" : 0,
    "requestedAmount" : 26952,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(2079),
    "version" : NumberLong(0)
}

/* 13 */
{
    "_id" : NumberLong(29),
    "allocatedAmount" : 25000,
    "createdByUser" : 97,
    "dateCreated" : ISODate("2014-03-14T05:21:25.536Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-31T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-14T05:21:25.536Z"),
    "remaining" : 25000,
    "requestedAmount" : 25000,
    "seedType" : NumberLong(13),
    "seedVariety" : NumberLong(83),
    "supplier" : NumberLong(2156),
    "union" : NumberLong(2079),
    "version" : NumberLong(0)
}

/* 14 */
{
    "_id" : NumberLong(30),
    "allocatedAmount" : 25000,
    "createdByUser" : 97,
    "dateCreated" : ISODate("2014-03-14T05:21:48.485Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-03-31T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-14T05:21:48.485Z"),
    "remaining" : 25000,
    "requestedAmount" : 25000,
    "seedType" : NumberLong(13),
    "seedVariety" : NumberLong(84),
    "supplier" : NumberLong(2156),
    "union" : NumberLong(2079),
    "version" : NumberLong(0)
}

/* 15 */
{
    "_id" : NumberLong(31),
    "allocatedAmount" : 3000,
    "createdByUser" : 97,
    "dateCreated" : ISODate("2014-03-17T13:02:05.912Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-04-29T21:00:00.000Z"),
    "inputType" : "SEED",
    "lastUpdated" : ISODate("2014-03-17T13:02:05.912Z"),
    "remaining" : 3000,
    "requestedAmount" : 5000,
    "seedType" : NumberLong(4),
    "seedVariety" : NumberLong(126),
    "supplier" : NumberLong(1407),
    "union" : NumberLong(1686),
    "version" : NumberLong(0)
}

/* 16 */
{
    "_id" : NumberLong(32),
    "allocatedAmount" : 2000,
    "createdByUser" : 97,
    "dateCreated" : ISODate("2014-03-17T13:14:25.379Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-05-30T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-17T13:14:25.379Z"),
    "remaining" : 2000,
    "requestedAmount" : 2000,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1686),
    "version" : NumberLong(0)
}

/* 17 */
{
    "_id" : NumberLong(33),
    "allocatedAmount" : 8000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-19T10:28:02.631Z"),
    "deliveredAmount" : 0,
    "expectedCompletionDate" : ISODate("2014-06-29T21:00:00.000Z"),
    "fertilizerType" : "UREA",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-19T10:28:02.631Z"),
    "remaining" : 8000,
    "requestedAmount" : 10000,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1702),
    "version" : NumberLong(0)
}

/* 18 */
{
    "_id" : NumberLong(34),
    "allocatedAmount" : 5000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-25T14:39:07.030Z"),
    "deliveredAmount" : 1000,
    "expectedCompletionDate" : ISODate("2014-06-29T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-25T14:39:07.030Z"),
    "remaining" : 5000,
    "requestedAmount" : 10000,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1757),
    "version" : NumberLong(0)
}

/* 19 */
{
    "_id" : NumberLong(35),
    "allocatedAmount" : 6000,
    "createdByUser" : NumberLong(97),
    "dateCreated" : ISODate("2014-03-25T14:39:32.458Z"),
    "deliveredAmount" : 2000,
    "expectedCompletionDate" : ISODate("2014-06-29T21:00:00.000Z"),
    "fertilizerType" : "DAP",
    "inputType" : "FERTILIZER",
    "lastUpdated" : ISODate("2014-03-25T14:39:32.458Z"),
    "remaining" : 6000,
    "requestedAmount" : 10000,
    "supplier" : NumberLong(1405),
    "union" : NumberLong(1523),
    "version" : NumberLong(0)
}

当我UnionAllocation.list()时,我得到:

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.Double to type java.lang.Long
    at org.grails.datastore.mapping.model.types.conversion.DefaultConversionService.convert(DefaultConversionService.java:21)
    at org.grails.datastore.mapping.engine.NativeEntryEntityPersister.refreshObjectStateFromNativeEntry(NativeEntryEntityPersister.java:478)
    at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.refreshObjectStateFromNativeEntry(MongoEntityPersister.java:110)
    at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.refreshObjectStateFromNativeEntry(MongoEntityPersister.java:78)
    at org.grails.datastore.mapping.engine.NativeEntryEntityPersister.createObjectFromNativeEntry(NativeEntryEntityPersister.java:379)
    at org.grails.datastore.mapping.mongo.query.MongoQuery$MongoResultList.convertDBObject(MongoQuery.java:993)
    at org.grails.datastore.mapping.mongo.query.MongoQuery$MongoResultList$1.next(MongoQuery.java:967)

2 个答案:

答案 0 :(得分:0)

您是否手动更新了任何数据,即直接使用mongodb shell? ID为17的数据行似乎已被污染。

答案 1 :(得分:0)

我知道这是一个老问题,但它最终可以帮助某人。

无论如何,我有一个类似的问题,我解决了它创建我自己的转换器。

public class LongToDateConverter implements Converter<Long, Date> {
    @Override
    public Date convert(Long lng) {
        if(lng!=null)
            return new Date(lng);
        else
            return null;
    }
}

然后我注册为bean。

@Bean
@Override
public CustomConversions customConversions() throws Exception {
    List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
    converterList.add(new LongToDateConverter());

    return new CustomConversions(converterList);
  }

有关详细信息,请查看此处: https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mapping-configuration