L'exigence est que l'utilisateur puisse écrire un article, c'est pourquoi j'ai choisi le type Text
pour le champ content
de la base de données mysql. Comment puis-je convertir Java String
en MySQL Text
Voici 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
est de type Text
. J'espérais qu'il y aurait quelque chose comme ça Java.sql.Text
, puisque Java.sql.Blob
est un type réel, mais malheureusement, cela n'existe pas
Puisque vous utilisez JPA, utilisez l'annotation Lob
(et éventuellement l'annotation Column
.). Voici ce que dit la spécification JPA:
9.1.19 Annotation Lob
Une annotation
Lob
indique qu'une propriété ou un champ persistant doit être conservé en tant qu'objet volumineux dans un type d'objet volumineux pris en charge par la base de données. Les applications portables doivent utiliser l'annotationLob
lors du mappage vers un type Lob de base de données. L'annotation Lob peut être utilisée conjointement avec l'annotationBasic
. Un Lob peut être un type binaire ou caractère. Le type Lob est déduit du type du champ persistant ou de la propriété. Sauf pour les types basés sur des chaînes et des caractères, la valeur par défaut est Blob.
Alors déclarez quelque chose comme ceci:
@Lob
@Column(name="CONTENT", length=512)
private String content;
Avec @Lob
Je me retrouve toujours avec un LONGTEXT
dans MySQL.
Pour obtenir TEXT
je le déclare ainsi (JPA 2.0):
@Column(columnDefinition = "TEXT")
private String text
Trouvez ceci 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 this .
EDIT: Faites attention à Adam Siemions commentaire et vérifiez le moteur de base de données que vous utilisez avant d’appliquer columnDefinition = "TEXT"
.
pour mysql 'text':
@Column(columnDefinition = "TEXT")
private String description;
pour mysql 'longtext':
@Lob
private String description;