Jump to content
evertondesa

Chave composta com campo Image SQLServer

Recommended Posts

Olá Amigos.

Estou criando uma classe para controlar estoques em locais diferentes, porem a classe "Estoques" possui uma chave composta que esta na classe "EstoquePK".

Estou utilizando EclipseLink Com JPA. Tudo esta OK dentro do Eclipse, porem quando executo o programa o Java tenta criar a tabela conforma abaixo. Esta retornando o erro "A coluna 'ID' da tabela 'SB2' é do tipo inválido para uso como coluna de chaves em um índice."

 

CREATE TABLE SB2 (
    ID IMAGE NOT NULL
    ,B2_ALTERA VARCHAR(10) NULL
    ,B2_CMUNIT FLOAT(32) NULL
    ,B2_DTCADASTRO VARCHAR(10) NULL
    ,B2_DTFECHA VARCHAR(10) NULL
    ,B2_DTINTEG VARCHAR(10) NULL
    ,B2_DTULTINV VARCHAR(10) NULL
    ,B2_QATU INTEGER NULL
    ,B2_QFIM FLOAT(32) NULL
    ,B2_VATU FLOAT(32) NULL
    ,B2_VFIM FLOAT(32) NULL
    ,PRIMARY KEY (ID)
    )

O problema é que o SQL não aceita campo IMAGE como chave primaria da tabela então retorna erro.

 

Segue abaixo as classe que estou criando.


 

package entidades;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Embeddable
public class EstoquesPK implements Serializable {
    private static final long serialVersionUID = -637018809489152388L;
    
    @ManyToOne
    @JoinColumn(name = "B2_COD", referencedColumnName = "B1_COD")
    private Produtos B2_COD;

    @Column(length = 2)
    private String B2_LOCAL;

    public Produtos getB2_COD() {
        return B2_COD;
    }

    public void setB2_COD(Produtos b2_COD) {
        B2_COD = b2_COD;
    }

    public String getB2_LOCAL() {
        return B2_LOCAL;
    }

    public void setB2_LOCAL(String b2_LOCAL) {
        B2_LOCAL = b2_LOCAL;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((B2_COD == null) ? 0 : B2_COD.hashCode());
        result = prime * result + ((B2_LOCAL == null) ? 0 : B2_LOCAL.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        EstoquesPK other = (EstoquesPK) obj;
        if (B2_COD == null) {
            if (other.B2_COD != null)
                return false;
        } else if (!B2_COD.equals(other.B2_COD))
            return false;
        if (B2_LOCAL == null) {
            if (other.B2_LOCAL != null)
                return false;
        } else if (!B2_LOCAL.equals(other.B2_LOCAL))
            return false;
        return true;
    }
    
    

}

E abaixo a entidade


 

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "SB2")

public class Estoques implements Serializable {
    private static final long serialVersionUID = 5999236902534007386L;
    
    
    @EmbeddedId    
    @Id
    private EstoquesPK id;

    private int B2_QATU;

    private double B2_CMUNIT;

    private double B2_VATU;

    private double B2_QFIM;

    private double B2_VFIM;

    @Column(length = 10)
    private String B2_DTFECHA;

    @Column(length = 10)
    private String B2_DTULTINV;

    @Column(length = 10)
    private String B2_DTCADASTRO;

    @Column(length = 10)
    private String B2_ALTERA;

    @Column(length = 10)
    private String B2_DTINTEG;

    public EstoquesPK getId() {
        return id;
    }

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

    public int getB2_QATU() {
        return B2_QATU;
    }
    
    public void setB2_QATU(int b2_QATU) {
        B2_QATU = b2_QATU;
    }

    public double getB2_CMUNIT() {
        return B2_CMUNIT;
    }

    public void setB2_CMUNIT(double b2_CMUNIT) {
        B2_CMUNIT = b2_CMUNIT;
    }

    public double getB2_VATU() {
        return B2_VATU;
    }

    public void setB2_VATU(double b2_VATU) {
        B2_VATU = b2_VATU;
    }

    public double getB2_QFIM() {
        return B2_QFIM;
    }

    public void setB2_QFIM(double b2_QFIM) {
        B2_QFIM = b2_QFIM;
    }

    public double getB2_VFIM() {
        return B2_VFIM;
    }

    public void setB2_VFIM(double b2_VFIM) {
        B2_VFIM = b2_VFIM;
    }

    public String getB2_DTFECHA() {
        return B2_DTFECHA;
    }

    public void setB2_DTFECHA(String b2_DTFECHA) {
        B2_DTFECHA = b2_DTFECHA;
    }

    public String getB2_DTULTINV() {
        return B2_DTULTINV;
    }

    public void setB2_DTULTINV(String b2_DTULTINV) {
        B2_DTULTINV = b2_DTULTINV;
    }

    public String getB2_DTCADASTRO() {
        return B2_DTCADASTRO;
    }

    public void setB2_DTCADASTRO(String b2_DTCADASTRO) {
        B2_DTCADASTRO = b2_DTCADASTRO;
    }

    public String getB2_ALTERA() {
        return B2_ALTERA;
    }

    public void setB2_ALTERA(String b2_ALTERA) {
        B2_ALTERA = b2_ALTERA;
    }

    public String getB2_DTINTEG() {
        return B2_DTINTEG;
    }

    public void setB2_DTINTEG(String b2_DTINTEG) {
        B2_DTINTEG = b2_DTINTEG;
    }

}

Espero que alguém consiga me ajudar estou com muita dificuldade nisso.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Yuri080
      Bom dia, ultimamente eu venho tentado baixar o connector/J do MySQL para fazer um CRUD porém quando eu baixo o connector ele vem em formato de pasta, e sinceramente não sei mais o que fazer, eu baixei até pelo instalador do MySQL mas ele vem em formato de pasta  ele vem assim, e não sei o porque disso.
    • By Fernando Rafael
      Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
       
      Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
       
      String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription("Alguma descrição"); request.setTitle("Algum titulo"); //A notificação de conslusão só esta disponível a partir da API 11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //Salvando o arquivo no diretório de Downloads request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf"); DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); manager.enqueue(request);  
    • By Fernando Rafael
      Bom dia, alguém poderia me ajudar com esse problema? 
       
      Estou fazendo um aplicativo bem simples em que sua única função será criar uma pasta no celular (em local acessível pelo gerenciador de arquivos do usuário), e posteriormente copiar arquivos de outro local ou rede e colocar nesta pasta.
       
      Fiz algumas pesquisas, mas por incrível que pareça não encontrei algo que tenha funcionando. Também tenho dúvidas sobre qual seria o equivalente ao "C:/" do Android.
    • By Felgob
      O que as empresas mais esperam de um desenvolvedor Java que tem o nível júnior?
    • By nelson99
      Bom dia estou com o seguinte erro que não consigo resolver, estou tentando inserir uma parte de código html com js, no meu Html, através do appendChild, mas esta dando erro, o seguinte erro: Null is not an Object ( Evaluation 'DOM.transacaoContainer.appendChild(tr) )
       
      ja tentei colocando this.transacaoContainer.appendChild(tr);
      ja tentei colocar usando o insertBefore e nada. sempre o mesmo erro
       
      aqui esta o código :
       
       
       
       
      const DOM = {
                 
                  transacaoContainer: document.querySelector('.mytbody'),
       
                  addTransaction(transaction, index){
       
               
                  const tr = document.createElement('tr');
                  tr.innerHTML = DOM.innerHTMLtransaction(transaction);
                  DOM.transacaoContainer.appendChild(tr);
       
                      
       
              },
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.