【问题标题】:Encountered "INSERT" at character 1, but expected: ["DELETE", "SELECT", "UPDATE"]在字符 1 处遇到“INSERT”,但应为:[“DELETE”、“SELECT”、“UPDATE”]
【发布时间】:2016-02-01 19:54:16
【问题描述】:

我有一个名为查询的插入 JPA,如下所示。当我尝试使用实体管理器从我的 DAO 执行它时,我收到以下错误。我正在使用 Apache OpenJPA,我无法确定此问题的根本原因。由于我的域对象的复杂性,我无法使用 persist 方法。

在字符 1 处遇到“INSERT”,但应为:[“DELETE”、“SELECT”、“UPDATE”]。

@NamedQuery(
 name=IuaPersistenceConstants.QUERY_INSERT_AGREEMENT_ACKNOWLEDGEMENT,
 query="INSERT INTO AgreementAcknowledgement agrackn VALUES agrackn.id.agrmntCntntUrl = :agrmntCntntUrl, agrackn.id.prvsndUserSqn = :prvsndUserSqn, agrackn.id.prvsnUserEffD = :userEffDate, " +
 "agrackn.id.agrmntacknEffD = :agrmntacknEffD, agrackn.acknExpD = :acknExpD, agrackn.crtTs = :crtTs, agrackn.crtUidC = :crtUidC, agrackn.lstUpdtTs = :lstUpdtTs, agrackn.lstUpdtUidC = :lstUpdtUidC")


Query ackQuery =getEntityManager().createNamedQuery(IuaPersistenceConstants.QUERY_INSERT_AGREEMENT_ACKNOWLEDGEMENT);
 ackQuery.setParameter("agrmntCntntUrl", agreementDO.getAgreementURL());
 ackQuery.setParameter("agrmntacknEffD", agreementDO.getAgreementEffDate());
 ackQuery.setParameter("acknExpD", agreementDO.getAgreementExpDate());
 ackQuery.setParameter("prvsndUserSqn", userDO.getUserSequence());
 ackQuery.setParameter("userEffDate", userDO.getUserEffDate());
 ackQuery.setParameter("crtTs", new Date());
 ackQuery.setParameter("crtUidC", "WS");
 ackQuery.setParameter("lstUpdtTs", new Date());
 ackQuery.setParameter("lstUpdtUidC", "WS");
 ackQuery.executeUpdate();

【问题讨论】:

    标签: java oracle hibernate jpa openjpa


    【解决方案1】:

    OpenJPA doesn't seem to support JPQL "INSERT" queries。但这并不奇怪,因为 JPA 没有定义 INSERT 查询。它定义了 SELECT、UPDATE、DELETE 查询,仅此而已。请参阅 JPA 规范。这不是 SQL。

    【讨论】:

    • 那么当我的领域对象很复杂时如何插入记录呢?我在域中有很多 OneToMany 和 ManyToOne 成员。用所有这些细节构建域是非常困难的。如果我可以写一个查询,那就很容易了
    • 当您调用persist 时,JPA 实现会迎合INSERT。你不做插入。任何 JPA 教程都会告诉你这一点
    • 我了解persist方法。但是用我有限的数据构建域对象是非常困难的。例如,我有 AgreementAcknolodgement.java 域对象,它具有到 Agreement.java 和 User.java/UserRole.java 的一对多映射以及所有这些东西。
    猜你喜欢
    • 2012-11-02
    • 2021-12-26
    • 2011-05-16
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多