티스토리 뷰

spring-data-mongodb를 이용하여 mongoDB와 연동하는 프로젝트를 만들고있다.

CRUD API를 만들고 있는 도중에 insert하는 부분에서 이상한 것을 발견했다.

{
	"id":"AA0001",
	"name":"T-shirts",
	"type":"clothing",
	"price":"5000"
}
위와 같이 요청(POST)을 하여서 객체로 변환 후 
insert 메소드로 저장을 했다.  -  mongoTemplate.insert(obj);
200 OK 메시지가 떨어졌고, DB에 저장이 되었지만...

{
	"id":"AA0001",
	"_class":"com.test.model.product",
	"name":"T-shirts",
	"type":"clothing",
	"price":"5000"
}

위와 같이 "_class"라는 필드가 함께 저장이 되었다ㅠㅠ

http://stackoverflow.com/questions/6810488/spring-data-mongodb-mappingmongoconverter-remove-class/
여기에 "_class"가 같이 추가되는 이유는 나와있는데... 잘 모르겠다 ㅠㅠ

해결 방법

변경 전 (spring-context.xml)
1
2
3
4
5
6
7
8
<!-- mongo DB -->
<mongo:mongo host="localhost" port="27017">
<mongo:db-factory id="mongoDbFactory" dbname="test">
 
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoDbFactory">
</constructor-arg></bean>
</mongo:db-factory></mongo:mongo>


변경 후 (spring-context.xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- mongo DB -->
<mongo:mongo host="localhost" port="27017">
<mongo:db-factory id="mongoDbFactory" dbname="test">
 
<bean id="mappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext">
 
<bean id="defaultMongoTypeMapper" class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
    <constructor-arg name="typeKey">
        <null>
    </null></constructor-arg>
</bean>
   
<bean id="mappingMongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory">
    <constructor-arg name="mappingContext" ref="mappingContext">
    <property name="typeMapper" ref="defaultMongoTypeMapper">
</property></constructor-arg></constructor-arg></bean>
 
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoDbFactory">
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter">
</constructor-arg></constructor-arg></bean>
</bean></mongo:db-factory></mongo:mongo>
spring-context.xml의 mongoDB 설정에서 mongoTemplate을 생성하는 bean에 mappingMongoConverter를 추가해 주었다.
mappingMongoConverter는 typeKey를 Null로 채운 typeMapper를 defaultMongoTypeMapper를 가진 클래스이다.

위와 같이 변경하니 더 이상 "_class" 필드는 추가되지 않았다.

출처 - https://www.mkyong.com/mongodb/spring-data-mongodb-remove-_class-column/
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함