标签: openjpa

声明的持久性策略"OneToMany"不支持字段类型

我们是JPA的新手,并试图建立一个非常简单的一对多关系,其中一个叫做Message的pojo可以有一个由连接表定义的整数组id的列表GROUP_ASSOC.这是DDL:

CREATE TABLE "APP"."MESSAGE" (
        "MESSAGE_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)
    );

ALTER TABLE "APP"."MESSAGE" ADD CONSTRAINT "MESSAGE_PK" PRIMARY KEY ("MESSAGE_ID");

CREATE TABLE "APP"."GROUP_ASSOC" (
        "GROUP_ID" INTEGER NOT NULL,
        "MESSAGE_ID" INTEGER NOT NULL
    );

ALTER TABLE "APP"."GROUP_ASSOC" ADD CONSTRAINT "GROUP_ASSOC_PK" PRIMARY KEY ("MESSAGE_ID", "GROUP_ID");

ALTER TABLE "APP"."GROUP_ASSOC" ADD CONSTRAINT "GROUP_ASSOC_FK" FOREIGN KEY ("MESSAGE_ID")
    REFERENCES "APP"."MESSAGE" ("MESSAGE_ID");

这是pojo:

@Entity
@Table(name = "MESSAGE")
public class Message {
    @Id
    @Column(name = "MESSAGE_ID")
    @GeneratedValue(strategy …
Run Code Online (Sandbox Code Playgroud)

jpa openjpa

5
推荐指数
1
解决办法
2087
查看次数

IBM Websphere JPA配置 - 如何更新persistence.xml

我是EJB 3和JPA的新手.

我在appserver中创建了一个数据源jdbc/AppDataSource.默认持久性提供程序保留为com.ibm.websphere.persistence.PersistenceProviderImpl.我将默认的jta数据源JNDI名称保留为AppDataSource自身.我对JTA和非JTA感到困惑.它们的区别是什么?

我生成了实体并EntityTransaction在bean中创建了一个对象.在调用persist()commit()方法时,我收到一个错误:

javax.ejb.EJBException: See nested exception; nested exception is: <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
Caused by: <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
Run Code Online (Sandbox Code Playgroud)

openjpa如何在这里展示?

截至目前,我只persistence.xml包含实体类名称.

如何使其使用数据源的默认appserver值.或者我怎样才能提供jpa提供者和数据源详细信息的详细信息persistence.xml

请提供您的意见.

java orm websphere jpa openjpa

5
推荐指数
1
解决办法
2万
查看次数

使用JPQL从两个表中选择

我正在使用JPQL检索数据.我可以使用该语句获取数据

List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r 
where r = p.userId and r.userID = 1");
Run Code Online (Sandbox Code Playgroud)

现在我可以使用这个来获取相册名称:

int i=0;
for (i=0;i<persons.size(); i++)
{   
     System.out.println("Testing n "+ i +" " +  persons.get(0));
}
Run Code Online (Sandbox Code Playgroud)

现在我想获取相册名称和roleuser的行名称 firstname

我正在使用查询

persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,   
Roleuser r where r = p.userId and r.userID = 1").getResultList();
Run Code Online (Sandbox Code Playgroud)

现在如何获取行firstname和albumname作为persons.get(0)返回一个对象

通过运行代码:

 for (i=0;i<persons.size(); i++)
    {
        //r = (Roleuser) persons.get(i);
        System.out.println("Testing n "+ i +" " …
Run Code Online (Sandbox Code Playgroud)

java orm openjpa jpql jpa-2.0

5
推荐指数
1
解决办法
3万
查看次数

websphere 7和(基于应用程序)open-jpa 2

我想不使用内置的Websphere 7 jpa插件,而是使用应用程序WEB-INF/lib/open-jpa 2和专有的持久性提供程序.我无法为Websphere安装OSGI和JPA 2功能包.

最初,我只是尝试加载persistence.xml(版本="2"不支持)时收到sax解析错误.该错误是由open-jpa 1.2.3中的类抛出的.当我运行websphere/appserver/bin/wsjpaversion.bat时,会显示open-jpa 1.2.3 jar.默认情况下,它会覆盖应用程序中的open-jpa 2 jar.我创建了一个包含open-jpa 2 jar的共享库,并检查了这个配置选项:'为这个共享库使用一个独立的类加载器'.我将应用程序类加载器设置为最后加载父类,并为其分配新的共享库资源."版本2"错误消失了,但还有另一个问题.当我尝试初始化EntityManager时,我收到一个错误:

Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 2 more
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

还有一个细节:在persistence.xml中,provider元素设置为专有的PersistenceProviderImpl而不是默认的Websphere持久性提供程序.那么这个websphere默认来自何处以及如何防止它?(另一个重要的注意事项:当我完全删除persistence.xml时,我得到了同样的错误)

谢谢

persistence openjpa websphere-7

5
推荐指数
1
解决办法
9487
查看次数

在WebSphere上使用slf4j进行OpenJPA日志记录

我的Java EE 6应用程序使用slf4j作为日志记录框架的logback.现在我想将OpenJpa的SQL跟踪添加到我的日志文件中.OpenJpa-Documentation说,我可以使用一个参数:

<property name="openjpa.Log" value="slf4j"/>
Run Code Online (Sandbox Code Playgroud)

我将WebSphere Application Server v8.0.0.1用作Java EE容器.如果我将我的应用程序部署到服务器,则此参数不会更改任何内容.我可以在WebSphere Admin Console中更改日志级别,这样可以正常工作.但是一个无法绕过OpenJpa日志记录到我的slf4j框架.

有没有人使用这样的配置并解决了这个问题?

顺便说一句.我知道,信息中心 - 文章http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftejb_jpatroubleshoot .html 说,该参数将被忽略,但一切都应该可以,呃?

websphere openjpa slf4j

5
推荐指数
1
解决办法
2482
查看次数

JPQL JOINS与嵌套的SELECT

我可以在JPQL上做这样的事吗?

SELECT NEW com.MyDTO(p.a, p.b, q.c, q.d)
FROM
(SELECT r.* FROM MyDTO1 r ) p
LEFT OUTER JOIN
(SELECT s.* FROM MyDTO2 s ) q
ON p.x = q.y 
Run Code Online (Sandbox Code Playgroud)

或者类似的?(上面的查询混合了native和JPQL,所以不要误解)

我觉得这个部分有问题.

FROM
(SELECT r.* FROM MyDTO1 r ) p
Run Code Online (Sandbox Code Playgroud)

当我试图执行时,我收到了这个错误.

Exception Description: Syntax error parsing the query [.....], unexpected token [(]
Run Code Online (Sandbox Code Playgroud)

谢谢!

openjpa jpql

5
推荐指数
1
解决办法
4631
查看次数

OpenJpa和JNDI

对于OpenJPA,如何在jta_datasource中指定JNDI连接而不在persistence.xml中指定用户名和密码?如果在jandi的persistence.xml文件中没有指定用户名和密码,则会给出错误.

jpa jndi openjpa

5
推荐指数
1
解决办法
1740
查看次数

OpenJPA说:你已经为FooBar提供了colums,但是这个映射在这个上下文中不能有列

我有一些Java实体类在我的生产代码中运行良好.我正在为这个应用程序编写一个自动化测试,我正在重用同一个类.

当测试应用程序以这种方式创建其实体管理器时:

 Properties props = new Properties();
 props.setProperty("provider", "org.apache.openjpa.persistence.PersistenceProviderImpl");
 props.setProperty(...);      
 EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("foobar-upgrade-restful-test", props);

 EntityManager entityManager = entityManagerFactory.createEntityManager();
Run Code Online (Sandbox Code Playgroud)

应用程序抛出一条错误消息,告知:

Caused by: <openjpa-2.2.0-r422266:1244990 fatal user error> org.apache.openjpa.persistence.ArgumentException: You have supplied columns for "com.foo.bar.server.commontypes.job.CompositeJob", but this mapping cannot have columns in this context.
    at org.apache.openjpa.jdbc.meta.MappingInfo.assertNoSchemaComponents(MappingInfo.java:382)
    at org.apache.openjpa.jdbc.meta.strats.FlatClassStrategy.map(FlatClassStrategy.java:51)
    at org.apache.openjpa.jdbc.meta.ClassMapping.setStrategy(ClassMapping.java:392)
    at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:56)
    at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:411)
    at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:762)
    at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:651)
    ... 72 more
Run Code Online (Sandbox Code Playgroud)

我并不是真的理解错误消息,因为同一个实体bean在Glassfish下的应用程序中工作,而persistence.xml也几乎相同.(在测试中我使用RESOURCE_LOCALtx而不是JTA,但我怀疑它与此错误有关.

你知道什么是错的吗?

java jpa openjpa

5
推荐指数
1
解决办法
2540
查看次数

如何更改JPA生成的列名的默认格式

目前我正在将新的JPA实体映射到旧数据库.数据库中的列名称使用下划线分隔列名称,如"my_column_name".

问题是JPA默认使用camel case.

// Will be 'myColumnName' in queries and generated databases
private String myColumnName;
Run Code Online (Sandbox Code Playgroud)

我知道可以在属性上添加@Column(name ="..")或@JoinColumn(name ="...") - 但这意味着我必须将它添加到所有实体中的每个属性.

@Column(name = "my_column_name")
private String myColumnName;
Run Code Online (Sandbox Code Playgroud)

是否可以更改JPA的默认行为以使用'my_column_name'而不是'myColumnName'?

java persistence hibernate jpa openjpa

5
推荐指数
1
解决办法
3875
查看次数

在openJPA mySQL中删除实体时的OptimisticLockException

我用OpenJPA 2.4.0MySQL

我有3个表- ,meeting,.locationmeeting_location

meeting_location是一个连接表,它有1个外键meeting,2到location- main_location_idsecondary_location_id.

我使用以下参数初始化表,然后尝试从meeting表中删除该条目.

    id  loc_name    
------  ------------
     0  location 0  
     1  location 1  
     2  location 2  
     3  location 3  
     4  location 4  
     5  location 5  
     6  location 6  
     7  location 7  
     8  location 8  
     9  location 9  


         id  name       
------  -----------
     1  meeting 1  


             id  meeting_id  main_location_id  secondary_location_id  name    
------  ----------  ----------------  ---------------------  --------
     1           1                 4                      9  (NULL) …
Run Code Online (Sandbox Code Playgroud)

java mysql openjpa

5
推荐指数
0
解决办法
3493
查看次数

标签 统计

openjpa ×10

java ×5

jpa ×5

jpql ×2

orm ×2

persistence ×2

websphere ×2

hibernate ×1

jndi ×1

jpa-2.0 ×1

mysql ×1

slf4j ×1

websphere-7 ×1