我正面临着一个连接获取和渴望关系的问题。
实体C与抽象实体E具有反向关系
在执行简单的namedQuery时,如
SELECT a FROM A a WHERE a.key = :key
其中参数'key'是字符串类型,那么我没有问题。从检索到的实体A访问子实体B,按照其假定执行子请求。
SELECT a FROM A a JOIN FETCH a.entitiesB WHERE a.key = :key
javax.ejb.EJBTransactionRolledbackException: The transaction has been marked rollback only because the bean encountered a non-application exception :javax.ejb.EJBTransactionRolledbackException : The transaction has been marked rollback only because the bean encountered a non-application exception :org.apache.openjpa.persistence.ArgumentException : The specified parameter of type "class org.apache.openjpa.util.LongId" is not a valid query parameter.
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:345)
at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:283)
...
Caused by: <openjpa-2.2.0-r422266:1244990 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: The specified parameter of type "class org.apache.openjpa.util.LongId" is not a valid query parameter.
FailedObject: SELECT relation FROM Relation relation JOIN FETCH relation.accounts WHERE relation.key = :key [java.lang.String]
at org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary.java:1458)
at org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.java:544)
at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:453)
at org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:429)
at org.apache.openjpa.jdbc.sql.SelectImpl.prepareStatement(SelectImpl.java:479)
...
这是说明问题的代码示例。
实体A
@Entity
@Table(name = "TABLE_A")
@Access(AccessType.FIELD)
@NamedQueries({
@NamedQuery(name = "findADetails", query = "SELECT a FROM A a WHERE a.customKey.key = :customKey")})
public class A extends abstractEntity {
@Embedded
private CustomEmbeddedKey customKey;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "entityA")
private List<B> bEntities;
...
}
实体B
@Entity
@Table(name = "TABLE_B")
@Access(AccessType.FIELD)
public class B extends abstractEntity {
@ManyToOne(fetch = FetchType.LAZY, targetEntity = A.class)
@JoinColumn(name = "FK_A_ID")
private A entityA;
...
}
@Entity
@Access(AccessType.FIELD)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@SequenceGenerator(name = "TOTO_ID_SEQ", sequenceName = "TOTO_ID_SEQ", initialValue = 1, allocationSize = 1)
public abstract class abstractEntity {
@Id
@Column(name = "ID")
@GeneratedValue(generator = "TOTO_ID_SEQ", strategy = GenerationType.SEQUENCE)
private Long id;
@OneToOne(mappedBy = "...", fetch = FetchType.EAGER)
private C anotherEntity;
@OneToMany(mappedBy = "...", fetch = FetchType.LAZY)
private List<D> anotherEntities;
...
}
@Embeddable
@Access(AccessType.FIELD)
public class CustomEmbeddedKey {
@Column(name = "...", length = ...)
private String key;
...
}
TypedQuery<A> query = createNamedQuery("findADetails", A.class);
query.setParameter("customKey", queryParam);
List<A> aEntitiesFound = query.getResultList();
我想我找到问题了。这是由于openJPA并不真正支持的映射,如果我们参考关于快速获取注意事项和限制的文档
最后,我有两个解决方案:
解决方案1(简单的一个):
解决方案2:修改映射
优点:
缺点:
问题内容: 我有四个表: 和类似的实体结构: 我需要一个查询将返回所有与它在表和孩子初始化。该是预先抓取,但孩子们是懒牵强。 我知道如何编写查询,将查询表的直接子级并相应地对其进行初始化。但是,我不知道如何获取从顶层表急切获取的表的子级。 我已经尝试过类似的东西: 但是,这总是给我一个错误,即所有者不是SELECT的一部分。 任何帮助是极大的赞赏。 问题答案: Hibernate参考 我们可能需要
Facebook在共享调试器上显示所有内容。不知道我还能做些什么让它获取正确的信息。 应该修复的警告 推断属性应显式提供'og: Image'属性,即使可以从其他标记推断出值。 这是一个“og:type”的专有名词。 适当的“og:url”表示明确的责任,但必须具有适当的责任。共有 应明确提供缺少“fb:App_ID”属性的应用程序ID,并指定应用程序ID,以便将共享到Facebook的故事正确归
我试图在eclipse中使用owlapi创建一个本体,使用owl-osgi-distribution 4.0.2并得到一个Noclassfound错误,与链接中的错误类似 根据我得到的错误: 有了链接中的答案,我明白了我的owlapi文件需要添加,为了解决这个问题,我参考了下面的方法。 http://www.jabenitez.com/2015/08/19/solucionando-el-erro
最近,我致力于数据虚拟化,以整合跨部门的数据。在搜索了几个软件之后,我决定使用Redhat JBOSS数据虚拟化,因为该软件是开源的。我已经安装了JDK、JBOSS Studio和数据虚拟化插件来运行Teiid。在那之后,我开始了Teeid模型项目的新项目,做了一些配置,所有的过程都很顺利,没有错误。但是当我准备执行最后的进程时,我发现了错误。 第一行错误消息是: 无法部署以下VDB执行:[vdb
我正在尝试执行以下代码。 它正在生成以下错误。 线程“main”java.lang.NoClassDeffounder异常错误:com/google/inject/provider在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(未知源)在java.net.URLClassLoader.Defin
错误:## Tkinter回调中的异常 回溯(最近一次呼叫最后一次): 文件“C:\Users\hp-\AppData\Local\Programs\Python\Python35-32\lib\tkinter\uuuuuu init\uuuuuuuuu.py”,第1549行,在call return self中。func(*args) 文件"C:\用户\hp-\下载\pyguii.py",第12