标签: datanucleus

使用JPA指定索引(非唯一键)

如何定义字段,例如email使用JPA注释具有索引.我们需要一个非唯一键,email因为每天在这个字段上有数百万个查询,没有密钥它有点慢.

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    public String username;
    public String name;
    public String email;
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了一个特定于hibernate的注释,但我正在尝试避免供应商特定的解决方案,因为我们仍然在决定hibernate和datanucleus之间.

更新:

从JPA 2.1开始,您可以这样做.请参阅:此位置不允许使用注释@Index

java orm hibernate jpa datanucleus

88
推荐指数
5
解决办法
9万
查看次数

JPA中的多个唯一约束

有没有办法指定使用JPA在不同的列集上应该有多个唯一约束?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    // Unique on username
    public String username;

    public String name;
    public String email;
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了一个特定于hibernate的注释,但我正在尝试避免供应商特定的解决方案,因为我们仍然在决定hibernate和datanucleus之间.

java orm hibernate jpa datanucleus

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

maven谷歌应用引擎项目中数据核增强器的冲突版本

我在设置datanucleus增强器时遇到问题,需要与谷歌应用程序引擎项目一起使用.如果我使用datanucleus eclipse插件一切顺利,但在我的maven项目中,我得到一个奇怪的冲突版本错误.

我的POM有这些数据核参考:

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>1.1.0</version>
</dependency>

...

<plugin>
    <groupId>org.datanucleus</groupId>
    <artifactId>maven-datanucleus-plugin</artifactId>
    <version>1.1.0</version>
    <configuration>
        <mappingIncludes>**/*.class</mappingIncludes>
        <verbose>true</verbose>
        <enhancerName>ASM</enhancerName>
        <api>JDO</api>
    </configuration>
    <executions>
        <execution>
        <phase>compile</phase>
        <goals>
            <goal>enhance</goal>
        </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

当我尝试构建项目时,我收到以下错误:

Exception in thread "main" Plugin (Bundle) "org.datanucleus" is already registered. 
Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.0/**datanucleus-core-1.1.0.jar**" is already registered, and you are trying to register an identical plugin located at URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.3/**datanucleus-core-1.1.3.jar**."
org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus" is already registered. Ensure …

google-app-engine maven-2 datanucleus

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

如何在使用Google App Engine时关闭DataNucleus Enhancer

我在Eclipse上使用Google AppEngine Java代码.每次我保存java文件时,DataNucleus Enchancer都会启动"类的增强".它非常刺激,因为它在全屏模式下会消失焦点.谁知道我怎么能把它关掉?

如果我将其关闭,是否会影响我从Eclipse内部将应用程序部署到App Engine的能力?

java eclipse google-app-engine datanucleus

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

带有JPA部署的Google App Engine应用程序挂起

我有一个java GAE Web应用程序,其中datanucleus作为JPA提供程序.在我的机器上本地部署时 - 部署挂起(需要几分钟).看着任务管理器,我运行了一个javac进程.什么出了什么问题?

java google-app-engine jpa datanucleus

14
推荐指数
1
解决办法
799
查看次数

Apache Cassandra的高级Java客户端选择

有四个高级API可以访问Cassandra,我没有时间尝试它们.所以我希望找到一个可以帮助我选择合适人选的人.

我会写下我对他们的发现:

DataNucleus将-卡桑德拉 - 插件

优点:

  • 支持JPA1,JPA2,JDO1 - JDO3 - 我在评论中看到,JDO比使用JPA的Hibernate更好地扩展
  • kundera中提到的所有专业人士?

缺点:

  • 到目前为止对JDO没有任何考验(当然只与我有关;)
  • 找不到文档!

昆德拉

优点:

  • 具有所有优点的JPA 1.0注释(标准符合,没有样板代码,......)
  • 承诺在不久的将来跟随功能:JPA听众,@ Preersers @PostPersist等 - 关系,@ OneToMany,@ ManyToMany等 - 交易支持,@ Transactional

缺点:

  • 插件的早期开发阶段?
  • 错误?
  • 没有可能解决JDO/JPA框架中的问题?

s7 pelops

优点:

  • 纯java api - >更好地控制持久性?

缺点:

  • 纯java api - >样板代码

hector 0.7

优点:

  • Maven化
  • spring integration - >依赖注入
  • 纯java api - >更好地控制持久性?
  • jmx监控?
  • 管理节点似乎很容易和灵活

缺点:

  • 纯java api(无注释) - >锅炉板代码

结论到目前为止

由于我对RDMS,Hibernate,JPA,Spring以及对EJB不再那么新闻充满信心,我的第一印象是,去kundera本来是正确的选择.但在阅读了一些有关JPO,DataNucleus的帖子后,我不再确定了.对于DataNucleus,学习曲线应该是陡峭的(对于经验丰富的JPA开发人员?),我不确定,我是否应该去实现它.

我主要担心的是插件的状态.还有JDO和Datanucleus-Cassandra-Plugin的论坛支持/帮助,因为据我所知,它并没有广泛传播.

有人在那里,谁有经验,有一些framworks已经可以给我一个提示?也许混合策略也是有意义的.如果(如果存在的话)JDO不灵活/足够/不足以满足我的需求,那么回归到一个更容易的pelops或hector的API?这可能吗?是否有类似于JPA的方法来获取SQL连接和获取/放置数据?


在阅读了一下之后,我发现了以下附加信息:

Datanucleus-Cassandra-Plugin基于pelops,也可以访问以获得更大的灵活性,更高的性能(?),这应该用于具有大量数据的列族,JDO/JPA访问应仅用于"管理"数据,性能不是那么重要,数据量不是很大.

对于hector或pelops来说,这仍然是个问题.

pelops为它后来的Datanucleus-Cassandra-Plugin可扩展性,或者hector,它对节点hanldling有更多的支持.

java jpa jdo datanucleus cassandra

14
推荐指数
2
解决办法
6876
查看次数

JPA:哪些实现支持在事务外部延迟加载?

即使在创建实体管理器的实体管理器不再可用之后,EclipseLink也可以在实体中加载延迟关系.使用Hibernate 这不起作用,或者至少在该帖子时没有.

其他提供商怎么样?特别是OpenJPA和DataNucleus?

这有什么缺点(除了更复杂的实现)?

hibernate jpa openjpa eclipselink datanucleus

14
推荐指数
3
解决办法
7338
查看次数

Datanucleus Programmatic API类增强

我正在使用Eclipse 3.7(OSGI),我可以进行手动增强(使用Datanucleus Eclipse插件和datanucleus-enhancer-2.1.0版本作为插件依赖项导入)

我现在正在尝试使用API​​类增强功能:http://www.datanucleus.org/products/accessplatform/jpa/enhancer.html#api

使用ASM 3.1在类路径和此代码中:

DataNucleusEnhancer enhancer=new DataNucleusEnhancer("JDO","ASM");
enhancer.setVerbose(true);
enhancer.addClasses(...);
enhancer.enhance();
Run Code Online (Sandbox Code Playgroud)

我明白了:

You have selected to use ClassEnhancer "ASM" yet the JAR for that enhancer does not seem to be in the CLASSPATH!
org.datanucleus.enhancer.NucleusEnhanceException: You have selected to use ClassEnhancer "ASM" yet the JAR for that enhancer does not seem to be in the CLASSPATH!
    at org.datanucleus.enhancer.DataNucleusEnhancer.init(DataNucleusEnhancer.java:224)
    at org.datanucleus.enhancer.DataNucleusEnhancer.addClasses(DataNucleusEnhancer.java:406)
Run Code Online (Sandbox Code Playgroud)

使用教程中建议的代码:

JDOEnhancer enhancer = JDOHelper.getEnhancer();
enhancer.setVerbose(true);
enhancer.addClasses(...);
enhancer.enhance();
Run Code Online (Sandbox Code Playgroud)

我明白了:

javax.jdo.JDOFatalUserException: There are 0 services entries for the …
Run Code Online (Sandbox Code Playgroud)

java api jdo datanucleus

14
推荐指数
1
解决办法
642
查看次数

可以将Hibernate用作Google App Engine中的JPA提供程序

可以将Hibernate 3.5.x用作JPA提供程序,而不是最新版本的Google App Engine(1.3.2)中的默认提供程序

java google-app-engine hibernate jpa datanucleus

12
推荐指数
3
解决办法
7718
查看次数

Google App Engine DataNucleus 3.1.1意外的异常错误

试图在eclipse上找到摆脱这个错误的方法.

DataNucleus Enhancer (version 3.1.1) : Enhancement of classes
Encountered a problem: Unexpected exception
Run Code Online (Sandbox Code Playgroud)

这是日志

java.lang.RuntimeException: Unexpected exception
    at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76)
    at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:71)
    at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74)
    ... 2 more
Caused by: java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.datanucleus.enhancer.asm.ASMClassEnhancer.getClassNameForFileName(ASMClassEnhancer.java:272)
    at org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:727)
    at org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:525)
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1258)
    ... 7 more
Run Code Online (Sandbox Code Playgroud)

我有两个版本的java,一个是1.8.0_25,另一个是1.7.0_46

这是我的道路

 C:\Program Files (x86)\Java\jre7\bin;;C:\oraclexe\app\oracle\product\11.2.0\server\bin;;C:\ProgramData\Oracle\Java\javapath;
Run Code Online (Sandbox Code Playgroud)

并且作为默认情况下我在eclipse上使用jre7,不知道还有什么值得一提的.我发现在这里或其他网站上没有明确解释的解决方案,而不是尝试更改java版本,尝试在我的计算机上的所有Java实例,卸载并再次安装.我猜它可能是关于java和datanucleus compability问题,但目前使用java7和我使用的插件是从eclipse自动下载所以没有线索.如果您需要任何澄清,请问我.

jar文件

java google-app-engine datanucleus

11
推荐指数
3
解决办法
3267
查看次数