El requisito es que el usuario pueda escribir un artículo, por lo tanto, elijo el tipo Text
para el content
campo dentro de la base de datos mysql. ¿Cómo puedo convertirme Java String
enMySQL Text
Aqui 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, content
es type Text
. Tenía la esperanza de que hubiera algo así java.sql.Text
, ya que java.sql.Blob
es un tipo real, pero lamentablemente, eso no existe.
@Lob
más@Column
en un campo de cadena da "tipo de columna incorrecto, texto largo esperado pero el tipo de columna es texto". Pero el problema se resuelve cuando lo usé@Column(columnDefinition = "text")
@Lob
y@Column(length=512)
? ¿Por qué no simplemente ser feliz con@Lob
? Ambos no hacen ninguna diferencia al usar Hibernate JPA MySQL. Ambos dan como resultado el tipo de campo MySQLlongtext
.@Lob
anotación no me funcionó. Sin embargo,@Column(length=8192)
funcionó muy bien y resolvió mi problema.Con
@Lob
siempre termino con unLONGTEXT
en MySQL.Para conseguirlo,
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.
Porque
columnDefinition
también es bueno leer esto .EDITAR: Preste atención al comentario de Adam Siemions y verifique el motor de base de datos que está utilizando, antes de presentar la solicitud
columnDefinition = "TEXT"
.fuente
para mysql 'texto':
@Column(columnDefinition = "TEXT") private String description;
para mysql 'longtext':
@Lob private String description;
fuente