2012-11-26 2 views
2

스프링 데이터 JPA를 사용하고 있으며 저장소 채우기를 사용하여 데이터를 채우려고합니다. 그러나 잘못된 JSON을 예외로합니다.스프링 데이터 -jpa와 함께 저장소 채우기를 사용하는 방법?

나는 그것이 data.json 파일의 위치 일 것 같아요. 나는 다음과 같이 META-INF 폴더 및 테스트 케이스에 대한 구성 오전에 놓여있다

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:META-INF/integration-test-context.xml","classpath:META-INF/sample-data.xml"}) 
public class JpaCompanyRepositoryIntegrationTest{ 

//Test cases here 

} 

내 샘플 인 data.xml은 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:repository="http://www.springframework.org/schema/data/repository" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/data/repository 
    http://www.springframework.org/schema/data/repository/spring-repository.xsd"> 

    <repository:jackson-populator location="classpath:data.json" /> 

</beans> 

및 data.json는

[{"_class" : "com.some.Class", 
    "id" : "id1", 
    "firstname" : "Admin", 
    "lastname" : "admin" 
}, 
{ 
    "_class" : "com.some.Class", 
    "id" : "id2", 
    "firstname" : "user", 
    "lastname" : "user" 
}] 
을 포함

Caused by: java.lang.RuntimeException: org.codehaus.jackson.JsonParseException: Unexpected character ('c' (code 99)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') 
at [Source: [email protected]; line: 1, column: 2] 
    at org.springframework.data.repository.init.ResourceReaderRepositoryPopulator.readObjectFrom(ResourceReaderRepositoryPopulator.java:145) 
    at org.springframework.data.repository.init.ResourceReaderRepositoryPopulator.populate(ResourceReaderRepositoryPopulator.java:115) 
    at org.springframework.data.repository.init.AbstractRepositoryPopulatorFactoryBean.onApplicationEvent(AbstractRepositoryPopulatorFactoryBean.java:93) 
    at org.springframework.data.repository.init.AbstractRepositoryPopulatorFactoryBean.onApplicationEvent(AbstractRepositoryPopulatorFactoryBean.java:34) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97) 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:934) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1) 
    at org.springframework.test.context.support.DelegatingSmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228) 
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148) 
    ... 24 more 
Caused by: org.codehaus.jackson.JsonParseException: Unexpected character ('c' (code 99)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') 
at [Source: [email protected]; line: 1, column: 2] 
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1432) 
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:385) 
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:306) 
    at org.codehaus.jackson.impl.Utf8StreamParser._handleUnexpectedValue(Utf8StreamParser.java:2084) 
    at org.codehaus.jackson.impl.Utf8StreamParser._nextTokenNotInObject(Utf8StreamParser.java:600) 
    at org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:486) 
    at org.codehaus.jackson.map.ObjectReader._initForReading(ObjectReader.java:638) 
    at org.codehaus.jackson.map.ObjectReader._bindAsTree(ObjectReader.java:597) 
    at org.codehaus.jackson.map.ObjectReader._bindAndCloseAsTree(ObjectReader.java:621) 
    at org.codehaus.jackson.map.ObjectReader.readTree(ObjectReader.java:381) 
    at org.springframework.data.repository.init.JacksonResourceReader.readFrom(JacksonResourceReader.java:80) 
    at org.springframework.data.repository.init.ResourceReaderRepositoryPopulator.readObjectFrom(ResourceReaderRepositoryPopulator.java:143) 
    ... 36 more 
:

나는 다음과 같은 예외가

그래서 좀 더 디버깅을했는데 구성에서 저장소 위치 지정자 속성의 "위치"특성을 찾고 있음을 알게되었습니다. 반면 xml에는 "위치"속성이 필요합니다. 나는 스프링 데이터 1.4.0.RELEASE와 jackson 1.9.2를 사용하고있다. 의존성을 섞어 놓았습니까?

+0

저는 StackOverflow에서 Spring 데이터 관련 질문을 모니터링하므로 전자 메일로 나를 핑 (ping) 할 필요가 없습니다. :) –

답변

2

이 봄 데이터 가공의 현재 버전의 버그하고있다 (자세한 내용은 DATACMNS-227 참조). 그것은 꿀벌 fixed recently이지만 수정 프로그램은 네임 스페이스를 변경해야하므로 스프링 데이터 커먼스 1.5의 차기 마일스톤으로 만 변경됩니다.

+0

감사합니다. 출시 날짜가 있습니까? – mira

+1

아니요, 간단히 'FactoryBean'을 직접 사용하고 그 동안'beans' 네임 스페이스를 사용하여 설정할 수 있습니다. –

관련 문제