Java 对列值求和并保存在JPA中的数据库中

Java 对列值求和并保存在JPA中的数据库中,java,mysql,swing,hibernate,jpa,Java,Mysql,Swing,Hibernate,Jpa,我到处都在搜索它,但我找不到解决问题的解决方案,我正在尝试使用JPQL查询对列中的所有输入进行求和,并在名为total的列中提交,插入后在JTextField中显示此结果,我尝试了不同的方法,但没有人给出正确答案。我的决议如下: public class ViewPedidos extends javax.swing.JInternalFrame { private DAOManager manager; private PedidoModel model; private MySQLPedi

我到处都在搜索它,但我找不到解决问题的解决方案,我正在尝试使用
JPQL
查询对列中的所有输入进行求和,并在名为
total
的列中提交,插入后在JTextField中显示此结果,我尝试了不同的方法,但没有人给出正确答案。我的决议如下:

public class ViewPedidos extends javax.swing.JInternalFrame {

private DAOManager manager;
private PedidoModel model;
private MySQLPedidoDAO mspdao;
private MySQLClienteDAO mscdao;
private MySQLProdutoDAO msprdao;
private List<Produto> produtos;
private List<Pedido> pedidos;
private Pedido ped;
private Produto pro;
private boolean editavel;


public void inserirDados(Pedido ped) {
        DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Date date = new Date();
        System.out.println(dateFormat.format(date));

        { JTextField sets ...} 

        /*LINE GIVING THE ERROR UNDER!!! */
        //float soma = mspdao.retornaSoma();
        Double soma = mspdao.retornaSoma();
        ped.setTotal(soma);
    }  }
佩迪多班级:

@Entity
@Table(name = "pedido")
public class Pedido implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataCadastro;
    @Column
    private String nomeProduto;
    @Column
    private int numControle;
    @Column
    private int quantidade;
    @Column(precision=15, scale=7)
    private float valorUnitario;
    @Column
    private Integer codCliente;
    @Column(precision=15, scale=7)
    private float valorTotal;
    @Column
    //private float total;
    private Double total;


    public Pedido() {
    }


    public Pedido(int numControle, Date dataCadastro, String nomeProduto, float valorUnitario, float valorTotal, int quantidade, int codCliente){
        this.numControle = numControle;
        this.dataCadastro = dataCadastro;
        this.nomeProduto = nomeProduto;
        this.valorUnitario = valorUnitario;
        this.valorTotal = valorTotal;
        this.quantidade = quantidade;
        this.codCliente = codCliente;
    }

    { getters and setters }



    @Override
    public String toString() {
        return "Pedido" + "id=" + id + ", dataCadastro=" + dataCadastro + ", nomeProduto=" + nomeProduto + ", numControle=" + numControle + ", quantidade=" + quantidade + ", valorUnitario=" + valorUnitario + ", codCliente=" + codCliente + ", valorTotal=" + valorTotal + ", total=" + getTotal() + '\n';
    }

    /**
     * @return the total
     */
    public float getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(float total) {
        this.total = total;
    }  }
用Main类测试它时,它给了我以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped [SELECT sum(valorTotal) from pedido]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:331)
    at com.exemplo.repositorio.MySQLPedidoDAO.retornaSoma(MySQLPedidoDAO.java:115)
    at com.exemplo.main.Main.retornaSoma(Main.java:117)
    at com.exemplo.main.Main.main(Main.java:35)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped [SELECT sum(valorTotal) from pedido]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
    ... 3 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped
    at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
    at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
    at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3633)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3522)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    ... 11 more
我已经尝试过用List return声明retronasoma()函数,并将其放在insert事件中,该函数已执行,但未提交


现在我意识到我的错误:

MySQLPedidoDAO:

@覆盖
公共双睾丸瘤(){
cf.createEm().getTransaction().begin();
//线路校正
Query q=cf.createEm().createQuery(“从Pedido中选择总和(valorTotal”);
Double-soma=(Double)q.getSingleResult();
cf.createEm().getTransaction().commit();
cf.close();
返回体;

}
1)对于代码和代码片段、结构化文档(如XML或输入/输出),请使用代码格式(而不是右侧按钮2中提供的HTML/CSS/JS片段格式)。为此,请选择文本并单击邮件发布/编辑表单顶部的
{}
按钮。2) 请回答问题以更正此问题。您的实体名为Pedido,而不是Pedido。类名称在JPQL中也是区分大小写的。@JBNizet我已经放置了
Query q=cf.createEm().createQuery(“从Pedido中选择sum(valorTotal))
Double
中返回时,在
float
中,它总是给出cast错误,因此我决定让
Double
。现在唯一的问题是,我无法从这个函数中获取值并将其放在total变量中,但它没有记录值(我在调试后修改了上面的解决方案,请检查它)
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped [SELECT sum(valorTotal) from pedido]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:331)
    at com.exemplo.repositorio.MySQLPedidoDAO.retornaSoma(MySQLPedidoDAO.java:115)
    at com.exemplo.main.Main.retornaSoma(Main.java:117)
    at com.exemplo.main.Main.main(Main.java:35)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped [SELECT sum(valorTotal) from pedido]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
    ... 3 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: pedido is not mapped
    at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
    at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
    at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:331)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3633)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3522)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    ... 11 more
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.exemplo.view.ViewPedidos.inserirDados(ViewPedidos.java:580)
    at com.exemplo.view.ViewPedidos.btInserirActionPerformed(ViewPedidos.java:406)
    at com.exemplo.view.ViewPedidos.access$400(ViewPedidos.java:46)
    at com.exemplo.view.ViewPedidos$5.actionPerformed(ViewPedidos.java:283)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)