banco de dados h2 embutido não está funcionando

lenda

Eu sou muito novo no uso do spring com dados espaciais e estou tentando desenvolver um exemplo que faz uso do banco de dados H2 incorporado do spring com os dados espaciais. Eu tenho minhas classes de entidade e estou tentando criar uma classe de integração para testar minhas funções de serviço. Infelizmente, continuo recebendo essa mensagem de erro que não entendo. Assistência seria apreciada

package com.whot.domain;

import javax.persistence.*;
import java.io.Serializable;

@Entity
public class Address implements WhotEntity{

    @Id
    @SequenceGenerator(name="addressIdSeq", sequenceName = "address_id_seq")
    @GeneratedValue(strategy= GenerationType.AUTO, generator = "addressIdSeq")
    private Long id;
    @Column(name="street_name")
    private String streetName;
    private Long unit;
    @Column(name = "street_number")
    private Long number;

    public Address(String streetName, Long unit, Long number) {
        this.streetName = streetName;
        this.unit = unit;
        this.number = number;
    }

    public Address(String streetName, Long number){
        this(streetName, -1L, number);
    }

    public Address(){

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getStreetName() {
        return streetName;
    }

    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }

    public Long getUnit() {
        return unit;
    }

    public void setUnit(Long unit) {
        this.unit = unit;
    }

    public Long getNumber() {
        return number;
    }

    public void setNumber(Long number) {
        this.number = number;
    }

    public String toString(){
        return String.format("%s[id: %d]", getClass().getName(), id);
    }
}

e a outra classe Hotspot

package com.whot.domain;

import org.springframework.data.geo.Point;

import javax.persistence.*;

@Entity
public class Hotspot implements  WhotEntity{

    @Id
    @SequenceGenerator(name="hotspotIdSeq", sequenceName = "hotspot_id_seq")
    @GeneratedValue(strategy= GenerationType.AUTO, generator = "hotspotIdSeq")
    private Long id;
    private String name;
    @OneToOne
    @JoinColumn(name = "ADDR_ID")
    private Address address;
    @Column(columnDefinition = "geometry(Point, 4326)")
    private Point location;

    public Hotspot(String name, Address address, Point location) {
        this.name = name;
        this.address = address;
        this.location  = location;
    }

    public Hotspot() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Point getLocation() {
        return location;
    }

    public void setLocation(Point location) {
        this.location = location;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Hotspot)) return false;

        Hotspot hotspot = (Hotspot) o;

        if (getId() != null ? !getId().equals(hotspot.getId()) : hotspot.getId() != null) return false;
        if (getName() != null ? !getName().equals(hotspot.getName()) : hotspot.getName() != null) return false;
        if (getAddress() != null ? !getAddress().equals(hotspot.getAddress()) : hotspot.getAddress() != null)
            return false;
        return getLocation() != null ? getLocation().equals(hotspot.getLocation()) : hotspot.getLocation() == null;
    }

    @Override
    public int hashCode() {
        int result = getId() != null ? getId().hashCode() : 0;
        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
        result = 31 * result + (getLocation() != null ? getLocation().hashCode() : 0);
        return result;
    }

    public String toString(){
        return String.format("%s[id: %d]", getClass().getName(), id);
    }
}

Eu tenho minha classe de teste de integração que estou tentando configurar e tenho este

package com.whot.dao;

import com.whot.domain.Address;
import com.whot.domain.Hotspot;
import com.whot.repository.AddressRepository;
import com.whot.repository.HotspotRespository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.data.geo.Point;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

/**
 * Created by Bart on 2017-01-07.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
@DataJpaTest
@Transactional
public class HotspotRepositoryTest {

    @Autowired
    private HotspotRespository hotspotRepo;

    @Autowired
    private AddressRepository addressRepo;

    @Autowired
    private TestEntityManager em;

    private HashSet<String> hotspotSet;

    @Before
    public void setUp(){
        hotspotSet = new HashSet<>();
        addressRepo.save(new Address("Ossiomo Street", -1L, 2L));
        addressRepo.save(new Address("Wilson Avenue", 103L, 2025L));
        addressRepo.save(new Address("Rue Clark", 303L, 2084L));
        addressRepo.save(new Address("Plateau Close", 20L, 40L));


    }


    @Test
    public void TestFindAllHotspots(){

      // some test code here
    }
}

e este é o rastreamento de pilha da exceção que recebo.

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE HOTSPOT (ID BIGINT GENERATED BY DEFAULT AS IDENTITY, LOCATION GEOMETRY(POINT[*], 4326), NAME VARCHAR(255), ADDR_ID BIGINT, PRIMARY KEY (ID)) "; expected "long"; SQL statement:
create table hotspot (id bigint generated by default as identity, location geometry(Point, 4326), name varchar(255), addr_id bigint, primary key (id)) [42001-193]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.message.DbException.getSyntaxError(DbException.java:205) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.readLong(Parser.java:3094) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parseColumnWithType(Parser.java:4099) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parseColumnForTable(Parser.java:3938) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parseCreateTable(Parser.java:5977) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parseCreate(Parser.java:4238) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parsePrepared(Parser.java:362) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parse(Parser.java:317) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.parse(Parser.java:289) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.command.Parser.prepareCommand(Parser.java:254) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.engine.Session.prepareLocal(Session.java:561) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.engine.Session.prepareCommand(Session.java:502) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1203) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:170) ~[h2-1.4.193.jar:1.4.193]
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:158) ~[h2-1.4.193.jar:1.4.193]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.2.5.Final.jar:5.2.5.Final]
manish

LOCATION GEOMETRY(POINT[*], 4326)não é uma declaração de coluna de banco de dados H2 válida. A declaração correta é LOCATION GEOMETRY. Se você modificar a declaração do locationcampo na Hotspotclasse para @Column(columnDefinition = "GEOMETRY"), sua tabela deverá ser criada perfeitamente.

Também é importante notar que H2 não tem suporte embutido para tipos de dados espaciais. Você precisará do conjunto de topologia JTS no caminho de classe do aplicativo para poder usar colunas espaciais, conforme descrito na documentação vinculada.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

O banco de dados H2 é adequado como banco de dados embutido com grandes tabelas?

A inserção no modo oracle do banco de dados h2 não está funcionando como o esperado

Como verificar se o banco de dados embutido h2 foi criado?

buscar dados do banco de dados não está funcionando quando há classe ou id

O banco de dados não está funcionando em primefaces

Fechar ou desligar o banco de dados H2 após os testes não estarem funcionando

Spring Boot: H2 não está recuperando do banco de dados

A busca no banco de dados não está funcionando?

O Spring não vê o banco de dados h2, portanto, reclama que o banco de dados não está disponível

O driver para o tipo de banco de dados de teste [H2] não está disponível no classpath

Banco de dados H2: A mensagem de bug do NIO JVM está relacionada ao H2 (e possivelmente à corrupção do banco de dados)?

Onde estão meus arquivos de banco de dados H2?

Recebo uma lista vazia de dados findAll Spring e banco de dados h2 enquanto o banco de dados não está vazio

O banco de dados SQLite não salva dados, por que não está funcionando

Usando wpdb para exibir dados de banco de dados não wordpress não está funcionando

Banco de dados Spring e H2 - não é possível conectar ao banco de dados h2

Buscar dados do banco de dados e a atualização não está funcionando

A solicitação GET não está funcionando para recuperar dados do banco de dados

A inserção de dados no banco de dados não está funcionando para o Laravel 5.4 no servidor (funcionando no localhost)

Como ver se a coluna da minha tabela é uma chave estrangeira ou não está no banco de dados H2

O Spring Boot e a inicialização do banco de dados não estão funcionando corretamente

O script de comunicação do banco de dados <> PHP não está funcionando

O banco de dados de conexão do Laravel definido no modelo não está funcionando

O comando de migração do Laravel não está funcionando para banco de dados remoto

A consulta selecionada não está funcionando ao buscar dados do banco de dados

Quero excluir dados específicos do banco de dados SQLite, mas não está funcionando

A rolagem do elemento não está funcionando para carregar mais dados do banco de dados

A rolagem do elemento não está funcionando para carregar mais dados do banco de dados

Verifique se o valor do banco de dados não está funcionando devido ao valor nulo no banco de dados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo