86 votes

JPA: comment puis-je conserver une chaîne dans un champ de base de données, tapez MYSQL Text

La condition est que l'utilisateur peut écrire un article, donc je choisis de type Text de la content champ à l'intérieur de la base mysql. Comment puis-je convertir Java String en MySQL Text

Ici, vous allez Jim Tough

@Entity
public class Article implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Long userId;

    private String title;

    private String content;

    private Integer vote;

    //Constructors, setters, getters, equals and hashcode
}

Dans ma base de données MYSQL, content type Text. J'espérais qu'il y aurait quelque chose comme cela, java.sql.Text, depuis java.sql.Blob est un type réel, mais malheureusement, qui n'existe pas

134voto

Pascal Thivent Points 295221

Puisque vous êtes en utilisant JPA, utilisez l' Lob d'annotation (et, éventuellement, Column d'annotation). Voici ce que la spécification JPA dit à ce sujet:

9.1.19 Lob Annotation

Un Lob d'annotation indique qu'un propriété persistante ou champ doit être persistantes comme un objet de grande taille pour un la base de données pris en charge type d'objet volumineux. Portable les applications doivent utiliser les Lob annotation lorsque la carte - ping à un base de données Lob type. Le Métier d'annotation peut être utilisé en conjonction avec le Basic d'annotation. Un Métier peut être un binaire ou un type de caractère. L' Lob type est déduit à partir du type de la zone de persistance ou de la propriété, et sauf pour la chaîne et caractère les types par défaut à Goutte.

Afin de déclarer quelque chose comme ceci:

@Lob 
@Column(name="CONTENT", length=512)
private String content;

Références

  • JPA 1.0 de la spécification:
    • Section 9.1.19 "Lob Annotation"

119voto

Reitffunk Points 119

Avec @Lob je finis toujours avec un LONGTEXT de MySQL.

Pour obtenir TEXT je le déclare comme moyen (JPA 2.0):

 @Column(columnDefinition = "TEXT")
private String text
 

Trouvez-le mieux, car je peux directement choisir le type de texte que la colonne aura dans la base de données.

Pour columnDefinition il est également bon de lire ceci .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X