JPA: как сохранить строку в поле базы данных, введите текст MYSQL
требование заключается в том, что пользователь может написать статью, поэтому я выбираю тип Text
на content
поле внутри базы данных MySQL. Как я могу конвертировать Java String
на MySQL Text
держи 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
}
в моей базе данных MYSQL,content
тип Text
. Я надеялся, что будет что-то вроде этого java.sql.Text
С java.sql.Blob
является фактическим типом, но, к сожалению, этого не существует
3 ответа:
так как вы используете JPA, используйте
Lob
аннотация (и необязательноColumn
аннотация). Вот что говорит об этом спецификация JPA:9.1.19 Lob Аннотация
A
Lob
аннотация указывает, что постоянное свойство или поле должно быть сохраняется как большой объект поддерживаемый базой данных тип больших объектов. Портативные приложения должны использоватьLob
аннотация при сопоставлении с a тип бизнес-данных. большой объект аннотация может использоваться в сочетании сBasic
Примечание. Лоб может быть либо двоичный, либо символьный тип. Этот Тип Lob выводится из типа постоянное поле или свойство, а также кроме строковых и символьных типы значений по умолчанию для объекта.так объявите что-то вроде этого:
@Lob @Column(name="CONTENT", length=512) private String content;
ссылки
- спецификация JPA 1.0:
- Раздел 9.1.19 " Lob Аннотация"
С
@Lob
Я всегда заканчиваю сLONGTEXT
в MySQL.и
TEXT
Я заявляю это таким образом (JPA 2.0):@Column(columnDefinition = "TEXT") private String text
найти это лучше, потому что я могу напрямую выбрать, какой тип текста столбец будет иметь в базе данных.
на
columnDefinition
это также хорошо, чтобы читать этой.EDIT: Пожалуйста, обратите внимание на Adam Siemions комментарий и проверьте компонент database engine, который вы используете, перед применением
columnDefinition = "TEXT"
.