Gorm 클래스에서 생성 된 DDL의 필드 순서를 지정합니까?
문제
Gorm을 사용하여 Groovy 클래스에서 데이터베이스의 DDL을 생성합니다. 그것은 훌륭합니다. 그러나 생성 된 SQL의 필드 순서는 클래스의 필드 순서와 동일하지 않습니다. 예를 들어, 클래스를 만드는 경우
class Person
{
String firstName
String lastName
String address
String email
}
다음 SQL이 생성됩니다 (MySQL 용)
CREATE TABLE `test` (
`id` bigint(20) NOT NULL auto_increment,
`version` bigint(20) NOT NULL,
`address` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
필드는 정리되었습니다 알파벳 주문 (자동 생성 ID 및 버전 필드 후). 이 경우에는 괜찮지 만 필드 순서대로 중요한 문맥 정보가있는 훨씬 더 넓은 테이블이 있습니다.
내 질문은 다음과 같습니다. Gorm은 GOMP에 대해 Groovy 클래스의 선언 순서대로 SQL의 필드를 주문하라고 어떻게 말합니까?
해결책
주문을 지정하는 방법은 없지만 원하는대로 자신만의 테이블을 만들고 도메인 클래스에서 이름 매핑을 제공 할 수 있습니다. 또한 Gorm이 테이블을 만들고 올바른 순서로 테이블을 재현하고 그 후 Gorm에서 자동 DDL 물건을 끄도록 할 수 있습니다. Gorm이 선택한 필드 및 테이블 이름을 사용하는 경우 매핑을 추가 할 필요가 없습니다.
다른 팁
나는 이것에 대해 절대적으로 확신하지 못하지만 제약 조건 폐쇄는보기에서 필드의 순서를 정의 할 수 있습니다. 아마도 테이블의 필드에 반영됩니다.
class Person
{
String firstName
String lastName
String address
String email
}
static constraints = {
firstName()
lastName()
address()
email()
}
제휴하지 않습니다 StackOverflow