2017-06-01 18 views
3

私はMySQLの列をタイプとして宣言していますが、JSONと私はそれをJpa/Hibernateにマップするのに問題があります。私はバックエンドでSpring Bootを使用しています。プログラムは私にエラーを返し、私は列をマッピングすることはできませんと言われますJPA/Hibernateへのmysql JSON列のマッピング方法 - Java

@Entity 
@Table(name = "some_table_name") 
public class MyCustomEntity implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Long id; 

@Column(name = "json_value") 
private JSONArray jsonValue; 

は、ここに私のコードのごく一部です。

はMySQLのテーブルの列は以下のように定義される:

json_value JSON NOT NULL。

+2

** columnDefinition = "json" **: @@Column(name = "json_value"、columnDefinition = "json") – adyjr

+0

受け取った例外を共有してください。 – eg04lt3r

+0

問題はJSONArray型にすることができます。なぜなら、Stringを代入するとすべてが正常に動作しているからです。 –

答えて

0

あなたのJSON配列内の値は、あなたがこれを行うことができ、単純な文字列の場合:@Jを作ることができない人のために

@Type(type = "json") 
@Column(columnDefinition = "json") 
private String[] jsonValue; 
+0

'@ Type'は' org.hibernate.annotations.Type'です。 – Christian

0

。王の回答作業:

<dependency> 
    <groupId>com.vladmihalcea</groupId> 
    <artifactId>hibernate-types-5</artifactId> 
    <version>1.2.0</version> 
</dependency> 

(それは、休止状態5.1および5.0のための他のバージョンチェックhereだ)、この依存関係を追加しようとするとの実体

@TypeDef(name = "json", typeClass = JsonStringType.class) 

だから、フルバージョンにこの行を追加します。エンティティクラス:

@Entity 
@Table(name = "some_table_name") 
@TypeDef(name = "json", typeClass = JsonStringType.class) 
public class MyCustomEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Type(type = "json") 
    @Column(columnDefinition = "json") 
    private List<String> jsonValue; 
} 

私はスプリングブート1でコードをテストします。 5.9および休止タイプ-5 1.2.0。

関連する問題