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
Lobespecifica 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ónLobal 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;