Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JSON字符串[]映射到表问题_Java_Json_String - Fatal编程技术网

Java 将JSON字符串[]映射到表问题

Java 将JSON字符串[]映射到表问题,java,json,string,Java,Json,String,我正在为一个站点提取API,我的Jason返回如下内容: { "stats":{ "corners":[ "11", "1" ], "yellowcards":[ "1", "3" ], "redcards":[ "0", "0" ], "penalties":[

我正在为一个站点提取API,我的Jason返回如下内容:

{  
   "stats":{  
      "corners":[  
         "11",
         "1"
      ],
      "yellowcards":[  
         "1",
         "3"
      ],
      "redcards":[  
         "0",
         "0"
      ],
      "penalties":[  
         "0",
         "0"
      ],
      "substitutions":[  
         "0",
         "0"
      ],
      "attacks":[  
         "51",
         "51"
      ],
      "dangerous_attacks":[  
         "32",
         "31"
      ],
      "on_target":[  
         "5",
         "7"
      ],
      "off_target":[  
         "13",
         "5"
      ],
      "possession_rt":[  
         "55",
         "45"
      ]
   }
}
@ElementCollection
@CollectionTable(name="my_collection_table", joinColumns=@JoinColumn(name="stats_id"))
public Collection<String> getGoals(){
    return goals;
}
我尝试将其转换为Java类,它看起来是这样的:

包com.events.bettingevents.results

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

@Entity
@Table(name="resbet_stats")
public class Stats implements Serializable
{
    private String[] off_target;
    private String[] possession_rt;
    private String[] redcards;
    private String[] dangerous_attacks;
    private String[] corners;
    private String[] substitutions;
    private String[] on_target;
    private String[] yellowcards;
    private String[] attacks;
    private String[] penalties;
    private String[] goals;
    private Long statsId;
    private Results results;


    @OneToOne(mappedBy = "stats")
    public Results getResults() {
        return results;
    }

    public void setResults(Results results) {
        this.results = results;
    }

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO,generator="native")
    @GenericGenerator(name = "native",strategy = "native" )
    @Column(name="stats_id")
    public Long getStatsId() {
        return statsId;
    }

    public void setStatsId(Long statsId) {
        this.statsId = statsId;
    }

    @Column(name="goals")
    public String[] getGoals() {
        return goals;

    }

    public void setGoals(String[] goals) {
        this.goals = goals;

    }

    @Column(name="off_target")
    public String[] getOff_target ()
    {
       return off_target;

    }

    public void setOff_target (String[] off_target)
    {
        this.off_target = off_target;

    }

    @Column(name="possession_rt")
    public String[] getPossession_rt ()
    {
        return possession_rt;

    }

    public void setPossession_rt (String[] possession_rt)
    {
        this.possession_rt = possession_rt;

    }

    @Column(name="redcards")
    public String[] getRedcards ()
    {
        return redcards;

    }

    public void setRedcards (String[] redcards)
    {
        this.redcards = redcards;

    }

    @Column(name="dangerous_attacks")
    public String[] getDangerous_attacks ()
    {
        return dangerous_attacks;

    }

    public void setDangerous_attacks (String[] dangerous_attacks)
    {
        this.dangerous_attacks = dangerous_attacks;

    }

    @Column(name="corners")
    public String[] getCorners ()
    {
        return corners;

    }

    public void setCorners (String[] corners)
    {
        this.corners = corners;

    }

    @Column(name="substitutions")
    public String[] getSubstitutions ()
    {
        return substitutions;

    }

    public void setSubstitutions (String[] substitutions)
    {
        this.substitutions = substitutions;

    }

    @Column(name="on_target")
    public String[] getOn_target ()
    {
        return on_target;

    }

    public void setOn_target (String[] on_target)
    {
        this.on_target = on_target;

    }

    @Column(name="yellowcards")
    public String[] getYellowcards ()
    {
        return yellowcards;

    }

    public void setYellowcards (String[] yellowcards)
    {
        this.yellowcards = yellowcards;

    }


    @Column(name="attacks")
    public String[] getAttacks (){
        return attacks;
    }

    public void setAttacks (String[] attacks){
        this.attacks = attacks;

    }

    @Column(name="penalties")
    public String[] getPenalties ()
    {
        return penalties;

    }


    public void setPenalties (String[] penalties)
    {
        this.penalties = penalties;

    }


}



Can someone suggest what datatype for table columns should I use? Is it blob? I created all my columns as `varchar`(10).
我收到的错误如下(例如):

第1行“攻击”列的字符串值不正确:“\xAC\xED\x00\x05ur…” : : : 提前感谢您的帮助。

使用存储字符串集合。比如:

{  
   "stats":{  
      "corners":[  
         "11",
         "1"
      ],
      "yellowcards":[  
         "1",
         "3"
      ],
      "redcards":[  
         "0",
         "0"
      ],
      "penalties":[  
         "0",
         "0"
      ],
      "substitutions":[  
         "0",
         "0"
      ],
      "attacks":[  
         "51",
         "51"
      ],
      "dangerous_attacks":[  
         "32",
         "31"
      ],
      "on_target":[  
         "5",
         "7"
      ],
      "off_target":[  
         "13",
         "5"
      ],
      "possession_rt":[  
         "55",
         "45"
      ]
   }
}
@ElementCollection
@CollectionTable(name="my_collection_table", joinColumns=@JoinColumn(name="stats_id"))
public Collection<String> getGoals(){
    return goals;
}
@ElementCollection
@CollectionTable(name=“my\u collection\u table”,joinColumns=@JoinColumn(name=“stats\u id”))
公共集合getGoals(){
回归目标;
}

您需要为每个集合创建一个表,其中包含列值和引用所属实体的外键。

我只对所有列使用varchar数据类型。不要在列中存储
String[]
。了解
@OneToMany
@ManyToMany
是的,JPA正在尝试将您的类
Stats
字段插入数据库。它不知道如何将字符串数组转换为字符串类型以将数据库配置为。