【问题标题】:Send Json to springboot using postman使用邮递员将 Json 发送到 springboot
【发布时间】:2020-04-07 14:08:01
【问题描述】:

初学者

package com.origin.starter;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@EnableJpaRepositories("com.origin.starter")
@ComponentScan(basePackages = { "com.origin.starter" })
@EntityScan("com.origin.starter")  
@SpringBootApplication
public class OriginServerSideApplication {

    public static void main(String[] args) {
        SpringApplication.run(OriginServerSideApplication.class, args);
    }
}

控制器

package com.origin.starter.artistcontroller;

import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.origin.starter.artistservice.ArtistService;
import com.origin.starter.model.Artist;

@RestController
@RequestMapping("/origin/group")
public class ArtistController {

    @Autowired
    private ArtistService artistService;

    @PostMapping("/artistInfo")
    public void createHero(@Valid @RequestBody Artist artistInfo) {
        System.out.println(artistInfo);
        artistService.createArtist(artistInfo);

    }

}

实体(Artist.java)

package com.origin.starter.model;

import java.util.List;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter @Setter
@NoArgsConstructor
@Table(name = "Artist")
@AllArgsConstructor
@ToString
public class Artist {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long artistId;
    private String artistName;
    private int artistAge;
    private String artistDateOfBirth;
    private String artistLanguage;
    private String[] artistSocialMediaURLs ;
    List<Movie> movies;
}

Movie.java

package com.origin.starter.model;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter @Setter 
@NoArgsConstructor 
@AllArgsConstructor
public class Movie {

    private String movieName;
    private String movieHero;
}

服务

package com.origin.starter.artistservice;

import java.util.Arrays;
import java.util.List;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.origin.starter.herorepository.ArtistRepository;
import com.origin.starter.model.Artist;

@Service
public class ArtistService {

    @Autowired  
    private ArtistRepository artistRepository;

    public void createArtist(@Valid Artist artistInfo) {

        artistRepository.save(artistInfo);
    }

}

存储库

package com.origin.starter.herorepository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.origin.starter.model.Artist;

public interface ArtistRepository extends JpaRepository<Artist, Long> {

}

MyInputJson

[
    {
        "artistName": "xyz",
        "artistAge": 20,
        "artistDateOfBirth": "10/12/92",
        "artistLanguage": "english",        
        "artistSocialMediaURLs": [
           "fb",
           "Insta"
        ],
        "movies": {
            "movieName": "racegurram",    
            "movieHero": "alluarjun"
        },  
]

application.properties

spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=Origin-Server
spring.datasource.username=sa
spring.datasource.password=******
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql = true

## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = 
org.hibernate.dialect.SQLServer2012Dialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

#Sevlet Context-Path
server.servlet.context-path=/origin-group

我在邮递员中收到 404 错误,没有任何异常线索......即使在控制台中也没有异常线索......

我在邮递员那里得到了一些东西,比如......

{ "时间戳": "2019-12-14T09:37:06.245+0000", “状态”:404, “错误”:“未找到”, "message": "没有可用的消息", “路径”:“/origin-group/origin/group/artistInfo” }

这是我点击的网址 localhost:8080/origin-group/origin/group/artistInfo

更新

调试我的代码后,我更改了几行代码.... 现在我遇到了一个错误,例如....

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]





org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.List, at table: artist, for columns: [org.hibernate.mapping.Column(anchoring)]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1803) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE]
    at com.origin.starter.OriginServerSideApplication.main(OriginServerSideApplication.java:16) [classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_231]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_231]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_231]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_231]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.2.1.RELEASE.jar:2.2.1.RELEASE]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.List, at table: artist, for columns: [org.hibernate.mapping.Column(anchoring)]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:403) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1799) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    ... 21 common frames omitted
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: artist, for columns: [org.hibernate.mapping.Column(anchoring)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:488) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:455) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.mapping.Property.isValid(Property.java:227) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:624) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.mapping.RootClass.validate(RootClass.java:267) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:343) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:461) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1249) ~[hibernate-core-5.4.8.Final.jar:5.4.8.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) ~[spring-orm-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    ... 25 common frames omitted

【问题讨论】:

  • origin-group路径在哪里配置?
  • 这些详细信息可在 applications.properties 中找到
  • 响应状态为 404,这意味着您正在请求错误的资源。检查您的网址。你可以在这里找到更多en.wikipedia.org/wiki/List_of_HTTP_status_codes
  • @SivaReddy 您的包名在配置时不正确
  • 您发送数组,但您的代码需要单个项目:@PostMapping("/artistInfo") public void createHero(@Valid @RequestBody Artist artistInfo) {

标签: java json spring spring-boot spring-mvc


【解决方案1】:

在 ArtistRepository 中使用“@repository”注解

【讨论】:

    【解决方案2】:

    您的弹簧配置不正确。看看你的配置:

     @EnableJpaRepositories("my.package.base.*")
    

    这里的包名是错误的。用正确的名称替换所有包,例如:

    @EnableJpaRepositories("com.origin.starter")
    

    【讨论】:

    • @SivaReddy,检查您的网址。您的请求路径错误。
    猜你喜欢
    • 2022-01-25
    • 2020-06-23
    • 2017-08-17
    • 2015-03-21
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 2015-09-02
    • 2022-01-25
    相关资源
    最近更新 更多