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 rafaelmoreira78
      Boa tarde!
      Estou querendo fazer um select a partir da seleção de um combobox. Nesse combobox o usuário escolhe o tipo de busca que ele quer. Se é por nome, por id, por data etc. E depois, exibe os dados nos campos. Porém, não estou conseguindo e não sei como resolver isso.
      public void consultar(){ String sql ="select * from tbcertificados where ?=?"; try{ pst=conexao.prepareStatement(sql); pst.setString(1,cbConsulta.getSelectedItem().toString()); pst.setString(2,txtBusca.getText()); rs=pst.executeQuery(); if (rs.next()){ lblID.setText(rs.getString(1)); txtNome.setText(rs.getString(2)); comboCursos.setSelectedItem(rs.getString(3)); txtData.setText(rs.getString(4)); txtCH.setText(rs.getString(5)); txtEmpresa.setText(rs.getString(6)); txtObs.setText(rs.getString(7)); }  
    • By Fibonacci13
      O código dentro de chaves denomina-se "Bloco de código" ?


      Verdadeiro ou falso?
    • By Ninja2112
      Ola pessoal....estou c o seguinte problema: Tenho uma página .jsp com uns botões
         e querendo preenche-los durante o carregamento. De acordo com o value, querendo
         colorir de uma forma diferente. Alguma idéia ? Estou tentando assim:
      value="<%=consultarStatusSemana(dist1[i],vetorsematual[j])%>" e como posso chamar uma função q de os estilos de acordo ??
    • By lezão
      Boa tarde, a todos!
      encontrei esse codigo na internet esta sendo muito util, eu só tem um item q eu gostaria de mudar.
      e qnd entra na pagina naun aparecer o conteudo q esta em block, só aparecer qnd clicar na opção?
      veja como fica qnd entra na pagina:
      mostrar/ocultar.php
      <select id="tipo_pessoa" onchange="exibir_ocultar(this)"> <option value="Dinheiro">Dinheiro</option> <option value="Cartão">Cartão</option> </select> <br /><br /> <div id="Dinheiro">Troco Para?: <br /><input type="number"></div> <div id="Cartão">Aceitanos: <br /><img src="http://marmitexgranjaviana.com.br/wp-content/uploads/2020/07/aceitamos_todos_os_cart%C3%B5es_de_d%C3%A9bito_e_cr%C3%A9dito.png" width="400" height="100"/></div> <script type="text/javascript"> function exibir_ocultar(val) { if(val.value == 'Cartão') { document.getElementById('Dinheiro').style.display = 'none'; document.getElementById('Cartão').style.display = 'block'; } else { document.getElementById('Dinheiro').style.display = 'block'; document.getElementById('Cartão').style.display = 'none'; } }; </script>  
×

Important Information

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