>  기사  >  Java  >  JPA가 알파벳순으로 열이 포함된 테이블을 생성하는 이유는 무엇입니까?

JPA가 알파벳순으로 열이 포함된 테이블을 생성하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-29 06:23:30276검색

Why Does JPA Generate Tables with Columns in Alphabetical Order?

JPA 생성 테이블의 잘못된 테이블 순서

문제:

JPA(Java Persistence API)가 생성된 것 같습니다. 잘못된 열 순서가 있는 테이블, 특히 원하는 순서가 반대임에도 불구하고 'organizationNumber' 열 앞에 'name' 열이 나타나는 테이블.

조사:

테이블을 검사하면 다음 순서가 관찰됩니다.

+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| id                 | bigint(20)   | NO   | PRI | NULL    | auto_increment | 
| name               | varchar(255) | NO   |     | NULL    |                | 
| organizationNumber | varchar(255) | NO   | UNI | NULL    |                | 
+--------------------+--------------+------+-----+---------+----------------+

원인:

JPA는 기본적으로 알파벳 순서로 열을 생성합니다. 이 순서는 클러스터 전체에서 결정적인 순서를 보장하고 열 위치의 불일치를 방지하기 위한 것입니다.

해결 방법:

안타깝게도 이 문제에 대한 간단한 해결 방법은 없습니다. 한 가지 해결 방법은 원하는 순서를 강제하는 방식으로 열 이름을 수동으로 지정하는 것입니다. 이는 다음과 같이 적절한 영숫자 문자를 열 이름 앞에 붙여서 수행할 수 있습니다.

@Entity
@NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name")
public class Organization {

    private Long id;
    @Column(name = "a_name")
    private String name;
    @Column(name = "b_organizationNumber")
    private String organizationNumber;

    // ...
}

이 접근 방식을 사용하면 'id' 열이 먼저 표시되고 그 뒤에 'name'(접두사 'a'가 붙음)이 표시됩니다. ), 'organizationNumber'(접두사 'b').

위 내용은 JPA가 알파벳순으로 열이 포함된 테이블을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.