JPA carte JSON colonne pour Objet Java

Nous avons une grande table avec un grand nombre de colonnes. Après, nous avons déménagé à MySQL Cluster, le tableau ne peut pas être créé en raison de:

ERREUR 1118 (42000): Ligne de taille trop grande. Le maximum de la ligne de taille pour le type de table, pas de comptage de Gouttes, 14000. Cela comprend les coûts de stockage, consultez le manuel. Vous devez changer certaines colonnes de TEXTE ou de Gouttes

Comme un exemple:

@Entity @Table (name = "appconfigs", schema = "myproject")
public class AppConfig implements Serializable
{
    @Id @Column (name = "id", nullable = false)
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne @JoinColumn (name = "app_id")
    private App app;

    @Column(name = "param_a")
    private ParamA parama;

    @Column(name = "param_b")
    private ParamB paramb;
}

C'est une table pour stocker les paramètres de configuration. Je pensais que l'on peut combiner certaines colonnes dans l'un et l'enregistrer comme objet JSON et de le convertir dans un objet Java.

Par exemple:

@Entity @Table (name = "appconfigs", schema = "myproject")
public class AppConfig implements Serializable
{
    @Id @Column (name = "id", nullable = false)
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne @JoinColumn (name = "app_id")
    private App app;

    @Column(name = "params")
    //How to specify that this should be mapped to JSON object?
    private Params params;
}

Où nous l'avons défini:

public class Params implements Serializable
{
    private ParamA parama;
    private ParamB paramb;
}

En utilisant ce que nous pouvons combiner toutes les colonnes dans l'une et créer notre table. Ou nous pouvons diviser l'ensemble de la table en plusieurs tables. Personnellement, je préfère la première solution.

De toute façon, ma question est comment faire correspondre les Paramètres de la colonne qui est texte et contient chaîne JSON d'un objet Java?

Si vous avez de nombreux paramètres de configuration, il suffit d'utiliser la plaine de tableau avec 2 colonnes: la clé et la valeur et les charger dans la carte. Si vous souhaitez stocker les params JSON ou XML, juste stocker/lire le Texte et de convertir plus tard.
ne this vous aider
nous avons considéré cela comme la solution finale. Si je ne me trompe pas, il augmente la complexité alors que l'on tente de modifier les données. Merci quand même.
Je ne suis pas sûr. Nous utilisons MySQL cluster avec NDBCluster moteur pour nos tables. Est-il toujours en vigueur?

OriginalL'auteur Rad | 2014-09-09