Hibernar : MySQLSyntaxErrorException: Unknown column ‘____ ‘ in ‘field list’

Soy nuevo en Hibernación.

Quiero recuperar todos los registros de la tabla de Transacciones,

Tengo de error siguientes

 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column transactio2_.deleted' in 'field list'

Aunque deleted columna en la actualidad en la Tabla

Clase De Entidad :

@Entity
@Table(name = "transaction")
public class Transaction implements Comparable<Transaction>
{
@Id
@GeneratedValue
@Column(name = "transactionId")
private int transactionId;

@Column(name = "date")
private Date date;

@Column(name = "amount")
private BigDecimal amount;

@ManyToOne
@JoinColumn(name = "transactionTypeId")
private TransactionType transactionType;

@ManyToOne
@JoinColumn(name = "userId")
private User user;

@Column(name = "operation")
private String operation;

@Column(name = "lastUpdate")
private Date lastUpdate;

@Column(name = "deleted")
private int deleted;

@Column(name = "remark")
private String remark;

public Transaction()
{
    super();
}

@Override
public int compareTo(Transaction c)
{
    if (getTransactionId() < c.getTransactionId())
    {
        return -1;
    }
    if (getTransactionId() > c.getTransactionId())
    {
        return 1;
    }
    return 0;
}

public Date getLastUpdate()
{
    return lastUpdate;
}

public void setLastUpdate(Date lastUpdate)
{
    this.lastUpdate = lastUpdate;
}

public User getUser()
{
    return user;
}

public void setUser(User user)
{
    this.user = user;
}

public int getDeleted()
{
    return deleted;
}

public void setDeleted(int deleted)
{
    this.deleted = deleted;
}

public int getTransactionId()
{
    return transactionId;
}

public void setTransactionId(int transactionId)
{
    this.transactionId = transactionId;
}

public Date getDate()
{
    return date;
}

public void setDate(Date date)
{
    this.date = date;
}

public BigDecimal getAmount()
{
    return amount;
}

public void setAmount(BigDecimal amount)
{
    this.amount = amount;
}

public TransactionType getTransactionType()
{
    return transactionType;
}

public void setTransactionType(TransactionType transactionType)
{
    this.transactionType = transactionType;
}

public String getOperation()
{
    return operation;
}

public String getRemark()
{
    return remark;
}

public void setRemark(String remark)
{
    this.remark = remark;
}

public void setOperation(String operation)
{
    this.operation = operation;
}
 }

Hibernate transactionBean :

@ManagedBean
@ViewScoped
public class TransactionBean implements Serializable
{

    ArrayList<Transaction> transactionList = new ArrayList<>();

    /**
   * Public Constructor
    */
public TransactionBean()
{
     Session session = HibernateUtil.getSessionFactory().openSession();
    @SuppressWarnings("unchecked")
    transactionList = (ArrayList<Transaction>) session.createCriteria(Transaction.class).list();     
}

Lo que va mal en mi código ?

Edit : Aquí es crear una declaración de DB Tabla

 delimiter $$

   CREATE TABLE `transaction` (
      `transactionId` int(11) NOT NULL AUTO_INCREMENT,
      `date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
      `amount` decimal(10,2) DEFAULT NULL,
      `transactionTypeId` int(11) NOT NULL,
      `operation` varchar(45) DEFAULT NULL,
      `lastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `userId` int(11) NOT NULL,
      `deleted` tinyint(4) NOT NULL DEFAULT '0',
      `remark` varchar(450) DEFAULT NULL,
        PRIMARY KEY (`transactionId`),
        KEY `fk_transaction_1` (`userId`),
        KEY `fk_transaction_2` (`transactionTypeId`),
        CONSTRAINT `fk_transaction_1` FOREIGN KEY (`userId`) REFERENCES `user` (`userId`) ON     DELETE NO ACTION ON UPDATE NO ACTION,
       CONSTRAINT `fk_transaction_2` FOREIGN KEY (`transactionTypeId`) REFERENCES   `transaction_type` (`transactionTypeId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=latin1$$
  • agregar su creación de la tabla de secuencia de comandos para comprobar db nombre de la columna con mapeo hibernate
  • Se puede escribir mal el nombre de la columna en la base de datos, compruebe primero que
  • cambio deleted columna de tipo de datos de tinyint a int mismo como transactionId columna y el problema a resolver
  • He utilizado tinyint porque me voy a poner valor, sólo el Cero(0) O uno(1)
  • a continuación, intente boolean en la cartografía. con un cambio más tinyint(1) si usted sólo tiene 0 o 1

3 Kommentare

  1. 3

    He encontrado con el mismo problema si me manualmente crear Entidades JPA.
    Sólo asegúrese de que usted tiene Columna @ anotación para cada función de captador.

    @Column(name = "deleted")
    public int getDeleted()
    {
        return deleted;
    }
  2. 0

    usted está usando 0 o 1 en tinyint columna usar debajo de asignación se trabaja.

    @Column(name = "deleted")
    private boolean deleted;

    y un cambio más si usted necesita para intentar,
    usted está utilizando el valor booleano 0,1 así que usted puede utilizar tinyint(1), que es suficiente para 0,1.

    puede encontrar más información acerca de mapeo hibernate aquí

    • todavía no funciona con esta asignación
    • con @Column(name = «eliminado») private int eliminados; la asignación y tinyint(4), al insertar los datos, los datos se insertan bien (que no dará ningún ERROR mientras que la inserción)
    • En ‘TransactionType’ (que es ManyToOne en ‘Transacción’), entidad que me perdí columna eliminada. Es por eso que se le está dando ERROR, Pero Hibernate da ERROR «Desconocido columna transactio2_.eliminado’ in ‘field list'», por eso me confundí, debería dar ERROR Como » Unknown column ‘tarnsactionType.eliminado’ in ‘field list'» @ jubinPatel : gracias por tu tiempo

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea