2015-03-26 8 views
3

Я новичок в spring-data-rest. В моем приложении, когда я делаю вызов для отдыха, я получаю json, который состоит из собственных ссылок и ссылок на таблицы внешних ключей. Но я хочу использовать json вместо ссылок. Я сгенерировал свой код, используя генератор инструмента telosys. Вот моя JSON, что я, когда я получаю сделал REST вызов таблицы «товаров» в базе данных .:Spring Data Rest -Disable self links (HAL) в Json

{ 
"id" : 1, 
"rate": 300, 
"type": "item", 
"shortDescription": "test", 
"longDescription": "test test", 

"_links": { 
"self": { 
"href": "http://localhost:8080/sportsrest/merchandises/1" 
}, 
"listOfMerchandiseAttribute": { 
"href": "http://localhost:8080/sportsrest/merchandises/1/listOfMerchandiseAttribute" 
    }, 
    } 
} 

Но вместо того, чтобы связь «listOfMerchandiseAttribute» я хочу, чтобы получить JSON из listOfMerchandiseAttribute. listOfMerchandiseAttribute моя другая таблица в базе данных

То есть я хочу, чтобы мой JSON как это:

{ 
    "id": 1, 
"rate": 300, 
"type": "item", 
"shortDescription": "test", 
"longDescription": "test test", 

"_links": { 
"self": { 
"href": "http://localhost:8080/sportsrest/merchandises/1" 
}, 
"listOfMerchandiseAttribute": { 
     "id": 1, 
     "attributeName": "testname", 
     "attributeValue": 50  
    }, 
    } 
} 

Когда я поиск по Google я получил некоторые результаты и изменил файл ApplicationConfig.java в соответствии с этим, но все-таки я получая ссылки вместо JSON. Вот мой файл ApplicationConfig.

ApplicationConfig.java

/* 
* Created on 19 Mar 2015 (Time 14:41:07) 
* Generated by Telosys Tools Generator (version 2.1.0) 
*/ 

package co.vitti.sports; 

import org.springframework.context.MessageSource; 

import javax.sql.DataSource; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.support.ResourceBundleMessageSource; 
import org.springframework.data.rest.core.config.RepositoryRestConfiguration; 
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration; 
import org.springframework.http.MediaType; 
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; 
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 

import co.vitti.sports.validator.BinaryValidator; 
import co.vitti.sports.validator.CustomerPackageBalValidator; 
import co.vitti.sports.validator.MerchandiseItemValidator; 
import co.vitti.sports.validator.CustomerPackageValidator; 
import co.vitti.sports.validator.InvoiceValidator; 
import co.vitti.sports.validator.UserRoleValidator; 
import co.vitti.sports.validator.SportValidator; 
import co.vitti.sports.validator.MerchandiseTypeValidator; 
import co.vitti.sports.validator.BookingValidator; 
import co.vitti.sports.validator.TenantValidator; 
import co.vitti.sports.validator.PaymentModeValidator; 
import co.vitti.sports.validator.CourtValidator; 
import co.vitti.sports.validator.MerchandisePackageValidator; 
import co.vitti.sports.validator.CartValidator; 
import co.vitti.sports.validator.MigrationValidator; 
import co.vitti.sports.validator.TenantSportValidator; 
import co.vitti.sports.repository.converter.TenantSportKeyConverter; 
import co.vitti.sports.validator.TenantPaymentmodeValidator; 
import co.vitti.sports.repository.converter.TenantPaymentmodeKeyConverter; 
import co.vitti.sports.validator.MerchandiseAttributeValidator; 
import co.vitti.sports.repository.converter.MerchandiseAttributeKeyConverter; 
import co.vitti.sports.validator.CartItemValidator; 
import co.vitti.sports.validator.MerchandiseValidator; 
import co.vitti.sports.validator.UserValidator; 
import co.vitti.sports.validator.TimeslotValidator; 
import co.vitti.sports.validator.RoleValidator; 

import org.springframework.core.convert.support.ConfigurableConversionService; 

/** 
* Application configuration. 
* (messages resources, validators) 
* @author Telosys Tools Generator 
* 
*/ 
@Configuration 
@ComponentScan(basePackageClasses = ApplicationConfig.class) 
@EnableWebMvc 
public class ApplicationConfig extends RepositoryRestMvcConfiguration { 

    @Override 
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config){ 
     config.setDefaultMediaType((MediaType) MediaType.parseMediaTypes("application/x-spring-data-verbose+json")); 
    } 

    @Bean 
    public DataSource dataSource(){ 
     EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 
     return builder.setType(EmbeddedDatabaseType.HSQL).build(); 

    } 
    /** 
    * Message Ressource declaration. 
    * @return MessageRessource 
    */ 
    @Bean 
    public MessageSource messageSource() { 
     ResourceBundleMessageSource source = new ResourceBundleMessageSource(); 
     source.setBasename("i18n/messages"); 
     source.setUseCodeAsDefaultMessage(true); 
     return source; 
    } 

    /** 
    * Validator declaration for Binary 
    * @return the BinaryValidator 
    */ 
    @Bean 
    public BinaryValidator beforeCreateBinaryValidator() { 
     return new BinaryValidator(); 
    } 
    /** 
    * Validator declaration for CustomerPackageBal 
    * @return the CustomerPackageBalValidator 
    */ 
    @Bean 
    public CustomerPackageBalValidator beforeCreateCustomerPackageBalValidator() { 
     return new CustomerPackageBalValidator(); 
    } 
    /** 
    * Validator declaration for MerchandiseItem 
    * @return the MerchandiseItemValidator 
    */ 
    @Bean 
    public MerchandiseItemValidator beforeCreateMerchandiseItemValidator() { 
     return new MerchandiseItemValidator(); 
    } 
    /** 
    * Validator declaration for CustomerPackage 
    * @return the CustomerPackageValidator 
    */ 
    @Bean 
    public CustomerPackageValidator beforeCreateCustomerPackageValidator() { 
     return new CustomerPackageValidator(); 
    } 
    /** 
    * Validator declaration for Invoice 
    * @return the InvoiceValidator 
    */ 
    @Bean 
    public InvoiceValidator beforeCreateInvoiceValidator() { 
     return new InvoiceValidator(); 
    } 
    /** 
    * Validator declaration for UserRole 
    * @return the UserRoleValidator 
    */ 
    @Bean 
    public UserRoleValidator beforeCreateUserRoleValidator() { 
     return new UserRoleValidator(); 
    } 
    /** 
    * Validator declaration for Sport 
    * @return the SportValidator 
    */ 
    @Bean 
    public SportValidator beforeCreateSportValidator() { 
     return new SportValidator(); 
    } 
    /** 
    * Validator declaration for MerchandiseType 
    * @return the MerchandiseTypeValidator 
    */ 
    @Bean 
    public MerchandiseTypeValidator beforeCreateMerchandiseTypeValidator() { 
     return new MerchandiseTypeValidator(); 
    } 
    /** 
    * Validator declaration for Booking 
    * @return the BookingValidator 
    */ 
    @Bean 
    public BookingValidator beforeCreateBookingValidator() { 
     return new BookingValidator(); 
    } 
    /** 
    * Validator declaration for Tenant 
    * @return the TenantValidator 
    */ 
    @Bean 
    public TenantValidator beforeCreateTenantValidator() { 
     return new TenantValidator(); 
    } 
    /** 
    * Validator declaration for PaymentMode 
    * @return the PaymentModeValidator 
    */ 
    @Bean 
    public PaymentModeValidator beforeCreatePaymentModeValidator() { 
     return new PaymentModeValidator(); 
    } 
    /** 
    * Validator declaration for Court 
    * @return the CourtValidator 
    */ 
    @Bean 
    public CourtValidator beforeCreateCourtValidator() { 
     return new CourtValidator(); 
    } 
    /** 
    * Validator declaration for MerchandisePackage 
    * @return the MerchandisePackageValidator 
    */ 
    @Bean 
    public MerchandisePackageValidator beforeCreateMerchandisePackageValidator() { 
     return new MerchandisePackageValidator(); 
    } 
    /** 
    * Validator declaration for Cart 
    * @return the CartValidator 
    */ 
    @Bean 
    public CartValidator beforeCreateCartValidator() { 
     return new CartValidator(); 
    } 
    /** 
    * Validator declaration for Migration 
    * @return the MigrationValidator 
    */ 
    @Bean 
    public MigrationValidator beforeCreateMigrationValidator() { 
     return new MigrationValidator(); 
    } 
    /** 
    * Validator declaration for TenantSport 
    * @return the TenantSportValidator 
    */ 
    @Bean 
    public TenantSportValidator beforeCreateTenantSportValidator() { 
     return new TenantSportValidator(); 
    } 
    /** 
    * Validator declaration for TenantPaymentmode 
    * @return the TenantPaymentmodeValidator 
    */ 
    @Bean 
    public TenantPaymentmodeValidator beforeCreateTenantPaymentmodeValidator() { 
     return new TenantPaymentmodeValidator(); 
    } 
    /** 
    * Validator declaration for MerchandiseAttribute 
    * @return the MerchandiseAttributeValidator 
    */ 
    @Bean 
    public MerchandiseAttributeValidator beforeCreateMerchandiseAttributeValidator() { 
     return new MerchandiseAttributeValidator(); 
    } 
    /** 
    * Validator declaration for CartItem 
    * @return the CartItemValidator 
    */ 
    @Bean 
    public CartItemValidator beforeCreateCartItemValidator() { 
     return new CartItemValidator(); 
    } 
    /** 
    * Validator declaration for Merchandise 
    * @return the MerchandiseValidator 
    */ 
    @Bean 
    public MerchandiseValidator beforeCreateMerchandiseValidator() { 
     return new MerchandiseValidator(); 
    } 
    /** 
    * Validator declaration for User 
    * @return the UserValidator 
    */ 
    @Bean 
    public UserValidator beforeCreateUserValidator() { 
     return new UserValidator(); 
    } 
    /** 
    * Validator declaration for Timeslot 
    * @return the TimeslotValidator 
    */ 
    @Bean 
    public TimeslotValidator beforeCreateTimeslotValidator() { 
     return new TimeslotValidator(); 
    } 
    /** 
    * Validator declaration for Role 
    * @return the RoleValidator 
    */ 
    @Bean 
    public RoleValidator beforeCreateRoleValidator() { 
     return new RoleValidator(); 
    } 

    /** 
    * Add all converters for composite keys 
    */ 
    @Override 
    protected void configureConversionService(ConfigurableConversionService conversionService) { 
     super.configureConversionService(conversionService); 
     conversionService.addConverter(this.tenantsportKeyConverter()); 
     conversionService.addConverter(this.tenantpaymentmodeKeyConverter()); 
     conversionService.addConverter(this.merchandiseattributeKeyConverter()); 
    } 

    /** 
    * Converter for the composite key in the TenantSport entity 
    * @return the converter 
    */ 
    @Bean 
    public TenantSportKeyConverter tenantsportKeyConverter() { 
     return new TenantSportKeyConverter(); 
    } 
    /** 
    * Converter for the composite key in the TenantPaymentmode entity 
    * @return the converter 
    */ 
    @Bean 
    public TenantPaymentmodeKeyConverter tenantpaymentmodeKeyConverter() { 
     return new TenantPaymentmodeKeyConverter(); 
    } 
    /** 
    * Converter for the composite key in the MerchandiseAttribute entity 
    * @return the converter 
    */ 
    @Bean 
    public MerchandiseAttributeKeyConverter merchandiseattributeKeyConverter() { 
     return new MerchandiseAttributeKeyConverter(); 
    } 

// equivalents for <mvc:resources/> tags 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/app/**").addResourceLocations("/app/") 
    .setCachePeriod(31556926); 
    } 

    // equivalent for <mvc:default-servlet-handler/> tag 
    @Override 
    public void configureDefaultServletHandling(
    DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
    } 

} 

Может кто-нибудь, пожалуйста, помогите мне решить мою проблему и получить JSON вместо этого на ссылки. Спасибо заранее.

+0

является listOfMerchandiseAttribute своего собственного репозитория? если это не так, тогда вы должны получить полный json, а не ссылку –

+0

@NeilMcGuigan Спасибо за повтор. listOfMerchandise - это не собственный репозиторий. Я получил вышеупомянутый JSON, когда я сделал звонок REST в таблицу товаров. Первичный ключ в таблице товаров - это внешний ключ в списке listOhMerchandiseAttribute. Итак, я получаю ссылку таблицы listOfMerchandiseAttribute. Но вместо ссылки мне нужно получить JSON этой таблицы. – MAK

ответ

0

Вы должны убедиться, что listOfMerchandiseAttribute является членом вашего домена. Тогда преобразование по умолчанию в JSON должно иметь его там. И Spring Data REST будет использовать то, что вы сейчас представляете, и добавить Hypermedia.

Смотрите также Disable Hypertext Application Language (HAL) in JSON?

Смежные вопросы