java, jpa (eclipselink), mysql을 사용하여 "Shared Database/Separate Schemas"접근 방식으로 멀티 테넌트 웹 애플리케이션을 개발 중입니다.eclipselink를 사용하여 다중 스키마 기반 멀티 테넌트 웹 애플리케이션에 누락 된 열을 추가하는 방법
<persistence-unit name="GroupBuilderPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/?"/>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
<--- Here goes other properties definition -->
</persistence-unit>
지금 여기 내 EntityMangerFactory과의 EntityManager입니다 : 내 지속성 파일과 같은
emfForTenant = Persistence.createEntityManagerFactory("GroupBuilderPU");
EntityManager em = emfForTenant.createEntityManager();
em.setProperty("eclipselink.tenant-id", schemaNameAsTenantId);
그것 내가 어떤 실체에 새로운 지속성 열을 추가 해요 잘 전까지 작업.
나는 새 열 '문자열 rentalinfo'추가 한 법인 UserAccount 것 같은 : 이제
@Entity
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type = TenantTableDiscriminatorType.SCHEMA, contextProperty = PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT)
public class UserAccount implements Serializable {
...
private String rentalinfo;//Newly added column
...
}
그 후이 다음 줄은 오류를주고있다을 :
em.createQuery("SELECT ua FROM UserAccount ua").getResultList();
오류 :
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'RENTALINFO' in 'field list'
그래서이 앱에서 새 열 (확장 표)을 추가하는 방법은 무엇입니까? 바퀴벌레?
Yeap, MultitenantType.Table_PER_TENANT에는 ddl 세대가 지원되지 않습니다. Btw 솔루션은 flyway, liquibase 등등과 같은 데이터베이스 이동 도구를 사용하는 것입니다. flyway를 사용하고 있습니다. :) –
@FarhanNazmul 아, EclipseLink가 테이블을 확장하는 것과 관련된 솔루션을 찾고 있다고 가정 했었습니다. 그렇다면 솔루션은 테이블을 직접 확장하거나 도구를 사용하는 것입니다. 다행스럽게도 해결할 수 있습니다. –