2010-06-30 2 views
1

최근에 새 속성을 하나의 클래스에 추가했습니다. 목록 속성과 그 속성에 대한 XML 매핑을 작성했습니다. 데이터베이스를 삭제하거나 사용하지 않는 이유가 거의 없습니다. 변경 사항을 갱신하기위한 최대 절전 모드 설정 파일의 옵션. 데이터베이스에서 SQL 쿼리를 실행하여 수동으로해야합니다.Hiberante 속성 유형 목록, SQL을 통해 테이블에 추가

XML 매핑 파일 :

<list name="items" table="ITEM_ITEM_GROUP" lazy="false" cascade="save-update"> 
    <key column="ITEM_GROUP_ID"></key> 
    <list-index column="IG_INDEX" />    
    <many-to-many column="ITEM_ID" class="Item" /> 
</list> 

사람이 내가 그것을 어떻게 도와 주실 수 있습니까?

+0

이 '열'을 데이터베이스에 추가하여 기존 데이터베이스를 업데이트해야합니까? –

+0

예 열을 추가하여 데이터베이스를 업데이트해야합니다. –

+0

답변을 업데이트했습니다. –

답변

1

참조하십시오.

가장 쉬운 방법은 SchemaExport을 사용하여 데이터베이스 스키마의 sql 스크립트를 만드는 것입니다. 그런 다음 인덱스와 모든 항목이 포함 된 새 테이블을 복사하여 붙여 넣을 수 있습니다.

이 경우 대부분의 경우 기존 테이블을 변경하지 않고 새 항목을 추가하기 만하면됩니다.

java에서는 명령 줄에서 직접 SchemaExport를 호출 할 수 있습니다. this here과 같은 자습서를 살펴보십시오.

(당신이 사용하는 당신의 RDMS에 따라)

var schemaExport = new SchemaExport(configuration); 
schemaExport      
    .Execute(
    false, 
    false, 
    false, 
    null, 
    fileStream); 

그것은 기본적으로이 같은 것입니다 :

스키마를 수출하는 유틸리티를 작성할 필요가 C#으로

이 코드는 다음과 같이 보입니다

create table ITEM_ITEM_GROUP(
    ITEM_GROUP_ID int not null, 
    IG_INDEX int not null, 
    ITEM_ID int, 
    primary key (ITEM_GROUP_ID, IG_INDEX) 
) 

alter table ITEM_ITEM_GROUP 
    add constraint FKXXXX 
    foreign key (ITEM_GROUP_ID) 
    references YOUR_ENTITY 

alter table ITEM_ITEM_GROUP 
    add constraint FKXXXX 
    foreign key (ITEM_ID) 
    references ITEM 

아마도 뭔가를 놓쳤을 것입니다. 따라서 Hibernate가 스키마를 생성하고 생성 된 SQL을 조사하게하는 것이 가장 좋습니다.

+0

구문은 다소 혼란 스럽습니다. 네가 어떤 새장을 썼는지 내가 알 수 있겠 니? 자바입니다, –

+0

오 죄송합니다, 이것은 C#입니다. 그것은 자바에서 비슷한 보일 수 있습니다, 나는 그것을 해결합니다. –

1

테이블에 해당 열을 추가하고 싶습니까? ALTER TABLE 문을 사용

ALTER TABLE table_name 
ADD column_name datatype 

당신은 당신이 테이블을 추가하고, 열을 추가하지 않는 http://w3schools.com/sql/sql_alter.asp

+0

"일반"속성의 경우에는 true이지만, many-to-many 목록은 열이 아니기 때문에 링크 테이블입니다. –

+0

하지만 속성 유형 수집을위한 해결책이라고 생각하지 않습니다. 위의 XML 문의 열 이름은 무엇입니까? 문제는 두 테이블 사이의 관계를 설정하는 방법입니다. –

+0

사과드립니다. 필자는 제공된 매핑에 세심한주의를 기울여야했습니다. 위에 주어진 –