simple para for java mysql orm jpa

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ón Lob al mapear a un tipo de Lob de base de datos. La anotación Lob se puede usar junto con la anotación Basic . 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;