Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:MySQLSyntaxErrorException:未知列';在';字段列表';_Java_Hibernate_Hibernate Criteria - Fatal编程技术网

Java Hibernate:MySQLSyntaxErrorException:未知列';在';字段列表';

Java Hibernate:MySQLSyntaxErrorException:未知列';在';字段列表';,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我刚开始冬眠 我想从事务表中获取所有记录 我犯了以下错误 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column transactio2_.deleted' in 'field list' 虽然表中存在已删除列 实体类: @Entity @Table(name = "transaction") public class Transaction implements Compara

我刚开始冬眠

我想从事务表中获取所有记录

我犯了以下错误

 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column transactio2_.deleted' in 'field list'
虽然表中存在
已删除

实体类:

@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;
}
 }
@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();     
}

您正在
tinyint
列中使用0或1,使用下面的映射它将起作用。

@Column(name = "deleted")
private boolean deleted;
如果你需要尝试的话,还有一个改变, 您使用的是布尔值
0,1
,因此可以使用
tinyint(1)
,这对于0,1来说已经足够了。


您可以找到有关hibernate映射的更多信息

如果我手动创建JPA实体,我会遇到同样的问题。 只需确保每个getter函数都有@Column注释

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

我最近也遇到过类似的问题。在我的例子中,缺少数据库列

请添加表创建脚本,以使用hibernate Mapping验证db列名,可能是您在db中拼写了错误的列名,首先检查将
deleted
列数据类型从
tinyint
更改为
int
transactionId
列相同,并解决您的问题我使用tinyint是因为我要设置值,仅为零(0)或一(1),然后在映射中尝试
boolean
。如果只需要删除@Column(name=“deleted”)private int的0或1,只需再更改一次
tinyint(1)
;映射和tinyint(4),当我插入数据时,数据被很好地插入到“TransactionType”(在“Transaction”实体中,它在插入时不会给出任何错误)中,我错过了删除列。这就是为什么它会给出错误,但Hibernate会给出错误“未知列transactio2”。删除“在“字段列表”中”,这就是为什么我感到困惑的原因,它应该给出类似“未知列”TarnActionType。删除“在“字段列表”中”的错误@JubinPetel:thanx供您参考
@Column(name = "deleted")
public int getDeleted()
{
    return deleted;
}