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;
}