java - para - ormlite android
JPA: ¿cómo persisto un String en un campo de base de datos, escriba texto MYSQL (3)
Como está utilizando JPA, use la anotación Lob
(y opcionalmente la anotación de Column
). Esto es lo que dice la especificación JPA al respecto:
9.1.19 Anotación Lob
Una anotación de
Lob
especifica que una propiedad o campo persistente debe persistir como un objeto grande para un tipo de objeto grande admitido por la base de datos. Las aplicaciones portátiles deben usar la anotaciónLob
al mapear a un tipo de Lob de base de datos. La anotación Lob se puede usar junto con la anotaciónBasic
. Un Lob puede ser de tipo binario o de carácter. El tipo de Lob se infiere del tipo de campo o propiedad persistente, y, a excepción de los tipos basados en cadena y caracteres, se establece de manera predeterminada en Blob.
Así que declara algo como esto:
@Lob
@Column(name="CONTENT", length=512)
private String content;
Referencias
- Especificación JPA 1.0:
- Sección 9.1.19 "Anotación Lob"
El requisito es que el usuario pueda escribir un artículo, por lo tanto, elijo Text
tipo para el campo de content
dentro de la base de datos mysql. ¿Cómo puedo convertir Java String
en MySQL Text
Aquí tienes 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
}
En mi base de datos MYSQL, el content
es tipo Text
. Tenía la esperanza de que hubiera algo como este java.sql.Text
, ya que java.sql.Blob
es un tipo real, pero lamentablemente, eso no existe
Con @Lob
siempre termino con LONGTEXT
en MySQL.
Para obtener TEXT
lo declaro de esa manera (JPA 2.0):
@Column(columnDefinition = "TEXT")
private String text
Encuentre esto mejor, porque puedo elegir directamente qué tipo de texto tendrá la columna en la base de datos.
Para columnDefinition
también es bueno leer this .
EDITAR: Preste atención al comment Adam Siemions y compruebe el motor de la base de datos que está utilizando, antes de aplicar columnDefinition = "TEXT"
.
para mysql ''text'':
@Column(columnDefinition = "TEXT")
private String description;
para mysql ''longtext'':
@Lob
private String description;