Tag: datanucleus

持久保存@Embeddable的@ElementCollection(Google App Engine,datanucleus)

我正在尝试使用JPA2 @ElementCollection批注将JPA实体与一组自定义@Embeddable对象一起持久化。 简单的例子(这两个类都通过datanucleus增强): @Entity public class TestEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ElementCollection private Set testEmbeddables; public Set testEmbeddables() { return this.testEmbeddables; } } @Embeddable public class TestEmbeddable implements Serializable { public String s; } 但是,持久化的数据存储区实体只包含空值的集合,而不是实际的对象: TestEntity.testEmbeddables = [null, null, …] 保留一组基本类型(如字符串)或使用@Embedded嵌入单个TestEmbeddable对象非常合适。 是否有人能够澄清是否可以通过datanucleus-appengine支持嵌入式元素集合? 虽然JPA元素集合上的datanucleus部分仅给出了String集合的示例,但相应的JDO部分使用自定义的仅嵌入式类型。 function列表进一步指出嵌入式集合通常与GAE兼容,但没有说明是否支持自定义类型。 我还发现另一个人声称这应该有效 。 – 编辑 – 在DataNucleus回答之后,我又进行了一些测试: @ElementCollection […]

GAE,JPA,XG-transactions,太多实体组exception

我知道GAE上的XG事务中有5个实体组的限制,但我认为我在一个事务中只使用了3个组(Commodity,Category,CommodityCategory)并且仍然遇到此exception:引起:java.lang.IllegalArgumentException:operating单个事务中的实体组太多。 以下是我的datamodel和dao代码的重要部分: 分类模型 @Entity(name = “Category”) public class Category extends BaseDatastoreEntity{ private String name; private Key parentKey; private String parentName; @Unowned @OneToMany(cascade= CascadeType.ALL) private Set commodityCategories = new HashSet(); . . public void addCommodityCategoryInternal(CommodityCategory commodityCategory) { this.commodityCategories.add(commodityCategory); } 商品模型 @Entity(name = “Commodity”) public class Commodity extends BaseDatastoreEntity implements IRateable{ private String name; private BigDecimal price; […]

从现有数据库生成JDO对象

是否有从现有数据库生成JDO对象的工具? 我更喜欢一个看起来很棒的Eclipse插件,我可以使用它来生成和维护对象,但似乎这个目前还不存在。 是否有其他简单的工具来生成数据库对象?

无法使用GAE / J DataNucleus插件版本2.1.2获取新创建的JDO持久实体的ID

我的问题 我正在使用新的1.7.5 GAE / J SDK将我的应用程序从版本1.x移植到GAE / J的DataNucleus插件的2.0版本。 这将我的JDO版本从2.3更改为3.0.1。 我的持久化实体类具有类型为编码字符串的主键,以及对该对象的数字ID的只读访问权限。 每个实例都是其实体组的唯一成员(子级和父级仅通过数字ID链接)。 以前,我已经能够创建并持久化新的MyEntity实例,然后立即访问其数字ID以存储在父MyEntity实例的子ID列表中。 现在我发现新实例的数字ID在持久化后不会立即可用 – 即使它是生成并存储的并且稍后可用。 我的问题 在创建对象和持久性之后,我有什么办法可以立即恢复对数字ID的访问吗? “jdoconfig.xml”配置提取 […] 持久化实体类代码提取 @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = “true”) public class MyEntity implements Serializable { private static final long serialVersionUID = 1L; // No setter for this read-only data member @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension(vendorName=”datanucleus”, key=”gae.encoded-pk”, value=”true”) private […]

连接并坚持使用HBase

我只是尝试使用java客户端连接到hbase,它是cloudera-vm的一部分。 (192.168.56.102是vm的inet ip) 我使用虚拟盒与主机网络设置。 所以我可以访问hbase master的webUI @ http://192.168.56.102:60010/master.jsp 我的java客户端(在vm本身运行良好)也建立了与192.168.56.102:2181的连接 但是当它调用getMaster我得到连接被拒绝时看到log: 11/09/14 11:19:30 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=192.168.56.102:2181 sessionTimeout=180000 watcher=hconnection 11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Opening socket connection to server /192.168.56.102:2181 11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Socket connection established to cloudera-vm/192.168.56.102:2181, initiating session 11/09/14 11:19:30 INFO zookeeper.ClientCnxn: Session establishment complete on server cloudera-vm/192.168.56.102:2181, sessionid = 0x13267157f930009, negotiated […]

在GAE / J和JPA上使用@MappedSuperclass时,“字段jdoFieldFlags是冲突的”

在查询GAE / J上的mappedsuperclass扩展的实体时出错。 MappedSuperClass import java.sql.Timestamp; import javax.persistence.MappedSuperclass; @MappedSuperclass public abstract class AbstractModel { private String lastModifiedBy; private Timestamp createTimestamp; private Timestamp modifyTimestamp; private Integer version; // setters & getters } 实体 import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = “EMPLOYEE”) public class EmployeeModel extends AbstractModel { @Id private Integer id; private String address; […]

Google App Engine – org.datanucleus.exceptions.NucleusUserException:对象管理器已关闭

为什么下面的代码导致org.datanucleus.exceptions.NucleusUserException:对象管理器已关闭? 似乎在query.getResultList()处抛出exception。 public final void removeUserTokens(final String username) { final Query query = entityManager.createQuery( “SELECT p FROM PersistentLogin p WHERE username = :username”); query.setParameter(“username”, username); for (Object token : query.getResultList()) { entityManager.remove(token); } } 例外: org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed at org.datanucleus.ObjectManagerImpl.assertIsOpen(ObjectManagerImpl.java:3876) at org.datanucleus.ObjectManagerImpl.getFetchPlan(ObjectManagerImpl.java:376) at org.datanucleus.store.query.Query.getFetchPlan(Query.java:497) at org.datanucleus.store.appengine.query.DatastoreQuery$6.apply(DatastoreQuery.java:611) at org.datanucleus.store.appengine.query.DatastoreQuery$6.apply(DatastoreQuery.java:610) at org.datanucleus.store.appengine.query.LazyResult.resolveNext(LazyResult.java:94) at org.datanucleus.store.appengine.query.LazyResult$LazyAbstractListIterator.computeNext(LazyResult.java:215) […]

使用来自具有datanucleus maven插件的单独模块的JDO Persistent类

我有一个使用JDO持久保存到数据库的工作应用程序 – 我想使用第二个java模块中的PersistenceCapable类。 虽然应用程序编译一个简单的测试给出了错误: “com.hello.world.Foo”类不可持久化这意味着它要么没有被增强,要么文件的增强版本不在CLASSPATH中(或者被未增强的版本隐藏),或者Meta找不到该类的数据/注释。 好的,所以增强器插件没有在第二个模块的类上运行。 我不确定在构建期间我需要做什么才能将增强器指向该模块。 ParentProject 第二个模块:com.hello.world.Foo 带有相关部分的ParentProject pom.xml – 问题是我如何将增强器指向包含我的持久类的第二个模块? Second Module Second Module 1.0-SNAPSHOT compile javax.jdo jdo-api 3.0.1 org.datanucleus datanucleus-core [3.2.0, 3.2.99) runtime org.datanucleus datanucleus-api-jdo [3.2.0, 3.2.99) org.datanucleus datanucleus-rdbms [3.2.0, 3.2.99) runtime org.datanucleus datanucleus-maven-plugin 3.3.0-release JDO ${basedir}/datanucleus.properties ${basedir}/log4j.properties true process-classes enhance

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

我在Eclipse上使用Google AppEngine Java代码。 每次保存java文件时,DataNucleus Enchancer都会启动“类的增强”。 它非常刺激,因为它在全屏模式下会消失焦点。 谁知道我怎么能把它关掉? 如果我将其关闭,是否会影响我从Eclipse中部署应用程序到App Engine的能力?

命令行太长DataNucleus工具的标准错误

我收到了这个错误 The command line is too long. mvn install Standard error from the DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer The command line is too long.