Uzyskiwanie błąd entityManageFactory. Sprawdzenie schematu: brak tabela [hibernate_sequence]

0

Pytanie

Mam 2 bazy danych. Jednym z nich jest skonfigurowany i działa. Po dodaniu drugiej bazy danych u mnie występuje następujący błąd entityManageFactory. Sprawdzenie schematu: brak tabela [hibernate_sequence].

Moja schemat bazy danych wygląda następująco: zrzut ekranu schematu bazy danych

enter image description here

Mam dwie klasy dla dwóch tabel:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name = "nightly_rate_amounts")
@Table(name = "nightly_rate_amounts")
public class BookedNightlyRate {
@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "bnr_meta_id")
    private Long id;
    @Column(name = "unit_uuid")
    private UUID unitUuid;
    private LocalDate firstLiveDate;
    private LocalDate date;
    private BigDecimal amount;
    @Column(name = "currency_code")
    private String currencyCode;

    public ImmutableTriple<UUID, LocalDate, String> toUnitDateCurrencyKey() {
        return new ImmutableTriple<>(unitUuid, date, currencyCode);
    }

    public ImmutablePair<UUID, String> toUnitCurrencyKey() {
        return new ImmutablePair<>(unitUuid, currencyCode);
    }
}

i:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name = "unit_attributes")
@Table(name = "unit_attributes")
public class BookedUnitAttributes {
    @Id
    @Column(name = "unit_uuid")
    private UUID unitUuid;
    @Column(name = "first_date_available")
    private LocalDate firstLiveDate;
}

i pliki repozytorium:

public interface BookedNightlyRatesDao extends CrudRepository<BookedNightlyRate, Long> {

@Query(value = "SELECT DISTINCT bnr.unit_uuid as unitUuid, bnr.date, bnr.amount, bnr.currency_code as currencyCode " +
        "FROM nightly_rate_amounts AS bnr " +
        "WHERE bnr.unit_uuid IN (<unitUuids>) AND (bnr.date BETWEEN :fromDate AND :toDate)", nativeQuery = true)
List<BookedNightlyRate> findBookedNightlyRates(@Param("unitUuids") List<String> unitUuids, @Param("fromDate") LocalDate fromDate, @Param("toDate") LocalDate toDate);

@Query(value = "SELECT DISTINCT opb.unit_uuid as unitUuid, opb.date, opb.amount, opb.currency_code as currencyCode " +
        "FROM opb_nightly_rate_amounts AS opb " +
        "JOIN opb_sync_enabled_for_unit AS sync ON opb.unit_uuid = sync.unit_uuid WHERE sync.enabled = 1 AND opb.is_active = 1 " +
        "AND sync.unit_uuid IN (<unitUuids>) AND (opb.date BETWEEN :fromDate AND :toDate)", nativeQuery = true)
List<BookedNightlyRate> findOPBRates(@Param("unitUuids") List<String> unitUuids, @Param("fromDate") LocalDate fromDate, @Param("toDate") LocalDate toDate);
}

drugi interfejs:

public interface BookedUnitAttributesDao extends CrudRepository<BookedUnitAttributes, UUID> {

@Query(value = "SELECT ua.unit_uuid as unitUuid, ua.first_date_available as firstLiveDate " +
        "FROM unit_attributes AS ua " +
        "WHERE ua.unit_uuid IN (<unitUuids>)", nativeQuery = true)
List<BookedUnitAttributes> findUnitAttributes(@Param("unitUuids") List<String> unitUuids);
}

Ją przepiszę swoją bazę danych z jdbi na jpa. W ten sposób, klasy danych nie mieli żadnych komentarzy, a ja przerobił swoje pliki modeli w zakresie it zapytań w plikach repozytorium.

hibernate java spring spring-data-jpa
2021-11-23 06:49:58
1

Najlepsza odpowiedź

0

Ponieważ dodajesz dwie bazy danych, Spring nie wie, do jakiej bazie danych jest podłączony. Musisz dokładnie określić, do jakiej bazy danych chcesz się połączyć. Można połączyć z dwoma różnymi bazami danych.Oto przykład pracy z podłączeniem JdbcTemplate.

@Configuration
@ComponentScan("uz.dbo.dbocallcenter")
@PropertySource("classpath:database.properties")
public class Config2 {

    @Autowired
    Environment environment;

    private final String DRIVER = "driver";
    private final String URL1 = "url1";
    private final String USER1 = "dbusername1";
    private final String PASSWORD1 = "dbpassword1";
    private final String URL2 = "url2";
    private final String USER2 = "dbusername2";
    private final String PASSWORD2 = "dbpassword2";


    private DataSource dataSource1() {
        return getDataSource(URL1, USER1, PASSWORD1);
    }
    private DataSource dataSource2() {
        return getDataSource(URL2, USER2, PASSWORD2);
    }

    private DataSource getDataSource(String url1, String user1, String password1) {
        DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
        driverManagerDataSource.setUrl(environment.getProperty(url1));
        driverManagerDataSource.setUsername(environment.getProperty(user1));
        driverManagerDataSource.setPassword(environment.getProperty(password1));
        driverManagerDataSource.setDriverClassName(environment.getProperty(DRIVER));
        return driverManagerDataSource;
    }




    @Bean(name = "jdbcTemplate2")
    public JdbcTemplate jdbcTemplate2() {
        return new JdbcTemplate(dataSource2());
    }
    @Bean(name = "jdbcTemplate1")
    public JdbcTemplate jdbcTemplate1() {
        return new JdbcTemplate(dataSource1());
    }

}

trzeba mieć do czynienia z JpaRepository połączeniem. Dokładniej można uzyskać wiedzę o tym źródle

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

To również dobre wyjaśnienie tego, jak podłączyć dwie bazy danych differnet w jednym projekcie spring boot

https://www.baeldung.com/spring-data-jpa-multiple-databases

2021-11-23 10:37:58

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................