[java] JPA : 데이터베이스 필드에 문자열을 유지하는 방법, MYSQL 텍스트 입력

요구 사항은 사용자가 기사를 작성할 수 있다는 것이므로 mysql 데이터베이스 내의 필드 유형 Text을 선택 content합니다. 어떻게 변환 할 수 있습니다 Java StringMySQL 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는데 슬프게도 존재하지 않습니다



답변

JPA를 사용하고 있으므로 Lob주석 (및 선택적으로 Column주석)을 사용하십시오. 다음은 JPA 사양이 이에 대해 말하는 내용입니다.

9.1.19 Lob 주석

Lob지속적인 속성 또는 필드가 데이터베이스 지원 대형 오브젝트 유형에 큰 개체로 유지해야하는지 주석 지정합니다. 이식 가능한 애플리케이션은 Lob데이터베이스 Lob 유형에 매핑 할 때 주석을 사용해야합니다
. Lob 주석은 주석과 함께 사용할 수 있습니다
Basic. Lob은 바이너리 또는 문자 유형일 수 있습니다. Lob 유형은 영구 필드 또는 속성의 유형에서 유추되며 문자열 및 문자 기반 유형을 제외하고 기본값은 Blob입니다.

따라서 다음과 같이 선언하십시오.

@Lob
@Column(name="CONTENT", length=512)
private String content;

참고 문헌

  • JPA 1.0 사양 :
    • 9.1.19 절 “Lob 주석”


답변

@Lob난 항상로 끝날 LONGTEXTMySQL을한다.

TEXT그렇게 하려면 (JPA 2.0) 다음과 같이 선언합니다.

@Column(columnDefinition = "TEXT")
private String text

열이 데이터베이스에서 가질 텍스트 유형을 직접 선택할 수 있기 때문에 이것을 더 잘 찾으십시오.

들어 columnDefinition그것은 또한 좋은 읽기 .

편집 : 적용하기 전에 Adam Siemions 주석에 주의를 기울이고 사용중인 데이터베이스 엔진을 확인하십시오 columnDefinition = "TEXT".


답변

mysql ‘텍스트’:

@Column(columnDefinition = "TEXT")
private String description;

mysql ‘longtext’의 경우 :

@Lob
private String description;


답변