【发布时间】:2015-06-08 21:58:01
【问题描述】:
嗨,我对我一直在努力解决的一个问题有点绝望。作为一种实践,我正在尝试构建非常简单的电子银行应用程序。所以一个表称为 products (str productName, str descr),另一个是 SavingAccounts(int accountNo, int clientNo, int balance)。我有两个班级:
savingsAccount.java
@Entity
@Table(name = "savingsAccounts")
@NamedQueries({
@NamedQuery(name = "savingsAccount.findAll", query = "SELECT s FROM savingsAccount s"),
@NamedQuery(name = "savingsAccount.findByClientNo", query = "SELECT s FROM savingsAccount s WHERE s.clientNo = :p_clientNo")
})
public class savingsAccount extends product implements Serializable {
@Id
@Basic(optional = false)
@NotNull
@Column(name = "accountNo")
private Integer accountNo;
@Basic(optional = false)
@NotNull
@Column(name = "clientNo")
private Integer clientNo;
@Basic(optional = false)
@NotNull
@Column(name = "balance")
private double balance;
//getters and setters nad constructorscode here
product.java
@Entity
@Table(name = "products")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class product implements Serializable {
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "productName")
public String productName;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "descr")
private String descr;
//gettes、setter和constructor
但是当我运行 namedquery SavingAccount.findByClientNo 时,它给了我这个语句:
SELECT accountNo, productName, balance, clientNo, descr FROM savingsAccounts WHERE (clientNo = ?)
它给了我这个错误: 内部异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'descr' in 'field list'
我不知何故“觉得”问题在于 SavingAccount 表中没有名为 descr 的字段,但我真的不知道如何使其工作......感谢大家的帮助。
【问题讨论】:
-
感谢人们提供非常有用的提示。也许我会尝试解释我这样做的动机。也许你会告诉我这是完全错误的:)。原因是让它灵活 - 例如。当产品描述发生变化时,数据库表中的一个简单更新就可以完成整个工作,并且只要所有储蓄账户都有相同的描述,我就尝试扩展类产品。
-
第二个原因是显示 - 所有需要显示的信息都应该包含在同一个类中 - 例如产品概览将在一行中显示有关余额、accountNo、clientNo 和所需字段描述的信息。也许真的有一些更优雅的方式...... :)
标签: java jakarta-ee jpa inheritance