标签: openjpa

在JPA中使用的referencedColumnName是什么?

在JPA中有一个名为的属性referencedColumnName,可以设置@JoinColumn, @PrimaryKeyJoinColumn这个设置背后的想法,有人可以举出一个很好的例子来说明这个可以使用的地方吗?

orm hibernate jpa openjpa eclipselink

65
推荐指数
4
解决办法
9万
查看次数

JPA实现 - 哪一个最好用?

我已经使用了以下JPA实现:

  1. 冬眠,
  2. 排名靠前的,
  3. OpenJPA的

他们每个人都有自己的优点和缺点.我发现Hibernate是三者中最先进的,除了它将一些自己的增强功能与JPA混合在一起,这使得很难切换到其他提供商.最重要的是,在解释JPA时,它的查询解析器更宽松.他们让得到正确的库来支持hibernate变得有点困难,因为我发现它是一个试图获得所有依赖项的正确版本的任务.

Toplink还可以,但是有人觉得它有点瘫痪,因为看起来Oracle希望你使用/购买?他们更高级的图书馆.尝试下载它也是一项任务,因为您需要通过运行jar文件来安装它.我发现它只实现了基础JPA规范.我使用它的原因是hibernate使用了许多常用于其他开源项目的库,人们经常会遇到类问题,特别是在使用JBoss时

OpenJPA - 这是迄今为止最好的文档,易于下载和使用,但它似乎非常错误.也许它只是我的代码,但代码我发现更高级的用法,如OneToMany与CascadeType.all设置的关系似乎没有用.诚然,这可能是我的代码错了,我没有时间测试一个干净的案例,但很多这样的事件让我害怕使用它.我真的希望它变得更好.它的错误消息通常无助于解决问题.

人们使用了哪些其他图书馆,他们更喜欢哪些?为什么?

java hibernate jpa toplink openjpa

33
推荐指数
2
解决办法
4万
查看次数

JPA可以将结果作为地图返回吗?

我们目前基于命名查询返回的两个字段手动构建映射,因为JPA仅提供getResultList().

@NamedQuery{name="myQuery",query="select c.name, c.number from Client c"}

HashMap<Long,String> myMap = new HashMap<Long,String>();

for(Client c: em.createNamedQuery("myQuery").getResultList() ){
     myMap.put(c.getNumber, c.getName);
}
Run Code Online (Sandbox Code Playgroud)

但是我觉得自定义映射器或者类似物会更高效,因为这个列表很容易就会产生30,000多个结果.

任何想法,无需手动迭代即可构建Map.

(我使用的是OpenJPA,而不是休眠)

jpa resultset map openjpa

32
推荐指数
5
解决办法
7万
查看次数

JPA Criteria构建器IN子句查询

如何为下面给出的JPQL查询编写条件生成器api查询?我在用JPA 2.2.

SELECT * 
FROM Employee e
WHERE e.Parent IN ('John','Raj')
ORDER BY e.Parent
Run Code Online (Sandbox Code Playgroud)

java orm jpa openjpa jpa-2.0

26
推荐指数
3
解决办法
4万
查看次数

JPA/Hibernate批量(批量)插入

这是我在阅读了几个关于jpa批量插入的主题后创建的简单示例,我有2个持久对象User和Site.一个用户可以有很多站点,所以我们在这里有一对多的关系.假设我想创建用户并创建/链接几个站点到用户帐户.考虑到我愿意为Site对象使用批量插入,这是代码的样子.

User user = new User("John Doe");

user.getSites().add(new Site("google.com", user));
user.getSites().add(new Site("yahoo.com", user));

EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(user);
tx.commit();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码(我使用hibernate作为jpa实现提供程序)时,我看到以下sql输出:

Hibernate: insert into User (id, name) values (null, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
Run Code Online (Sandbox Code Playgroud)

所以,我的意思是"真正的"批量插入不起作用或我感到困惑?

以下是此示例项目的源代码,这是maven项目,因此您只需下载并运行mvn install来检查输出.

更新:

在Ken Liu亲切地建议之后,我已禁用Site对象id自动生成:

    User user = new User("John Doe");
    user.getSites().add(new Site(1, "google.com", user));
    user.getSites().add(new …
Run Code Online (Sandbox Code Playgroud)

java persistence hibernate jpa openjpa

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

JPA:@ManyToOne关系的默认列名映射

当我们上课时:

@Entity
Order implements Serializable {
    @Id
    private Integer id;
    ...
}
Run Code Online (Sandbox Code Playgroud)

和:

@Entity
OrderLine implements Serializable {
    @Id
    private Integer id;

    @ManyToOne
    Order order;
    ...
}
Run Code Online (Sandbox Code Playgroud)

属性订单将映射到哪个行名称

order_id, ORDER_ID or Order_id?

(省略@JoinColumn(name ='order_id')是故意的)

java hibernate jpa openjpa

23
推荐指数
2
解决办法
3万
查看次数

OpenJPA criteriaBuilder嵌套对象属性获取

OpenJPA中是否有任何方法可以通过CriteriaBuilder获取嵌套对象属性?

这是一个小案例.

@Entity
public class X {
       private Object Y;

       // getters, setters...
}

@Entity
public class Y {
       private String Z;

       // getters, setters...
}
Run Code Online (Sandbox Code Playgroud)

因此,在使用CriteriaBuilder时,我们使用X作为Root,即:

@PersistenceContext
private EntityManager entityManager;

//.....

Root<X> rootObj = criteriaBuilder.from(X.class);
CriteriaQuery<X> select;

String param1 = X.getY().getZ();

// initializing predicate, default value is TRUE
Predicate predicate1 = criteriaBuilder.isNull(null);

// construct search predicate which fails miserably due to IllegalArgumentExecption
if (X != null) {
predicate1 = criteriaBuilder.and(predicate1, criteriaBuilder.equal(rootObj.<String> get("Y.Z"), param1));}
Run Code Online (Sandbox Code Playgroud)

现在,我的悲痛就是 - > get("Y.Z")

CriteriaBuilder不知道反射取Z(但它可以并将解析Y).有没有办法直接从get()获取Z?

除了使用JPQL之外,我还可以想到另一种方法 …

java openjpa criteria-api

17
推荐指数
2
解决办法
9958
查看次数

使用WebSphere中的JPA从数据库中选择所有行

我正在尝试实现一个使用开放式JPA访问数据层的Web服务.我正在使用websphere v7.0和JPA 2.0.这项服务将从一个小的数据库中获取所有行(大约6行,并且将来不会扩展太多).我试图获取所有行并通过用户返回它们.我现在正在创建将检索数据的会话Bean.

我有几个JPA对象其中一个(表示我想要返回的所有数据的一行)看起来像这样......

@Entity
@NamedQueries({
@NamedQuery(name="EmailDomainTrust.getEmailDomains",
        query="SELECT DOMAIN_NAME,"+ 
        "DESCRIPTION, CONFIRMED_BY, CONFIRMED_DATE" + 
        "FROM EMAIL_DOMAIN_TRUST")          
})
@Table(name="EMAIL_DOMAIN_TRUST")
public class EmailDomainTrust implements Serializable {
    @Id
    @Column(name="EMAIL_DOMAIN_TRUST_ID")
    private long emailDomainTrustId;

    @Column(name="DOMAIN_NAME")
    private String domainName;
}
Run Code Online (Sandbox Code Playgroud)

那里还有很多,但我不想让这个太久.我只是想我会展示一些有用的变量,也许还有一些得到的集合.在我的会话bean中,我试图获取所有行...

public List<EmailDomainTrust> GetEmailDomains(){
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("");
    EntityManager em = emf.createEntityManager();
    //EntityTransaction userTransaction = em.getTransaction();
    System.out.println("Testing 1..2...3...!");
    List<EmailDomainTrust> ListOfEmailDomains = em.find(EmailDomainTrust.class, arg1)

    try
    {
    }
    catch(Exception e)
    {
    }
    return null;    
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的绝对不是鼻烟.但是,在线教程从未描述过将所有行从表中删除.我没有这个方法的任何参数,所以我将无法根据ID或类似的东西进行选择.任何建议都会很棒.

websphere openjpa jpa-2.0

16
推荐指数
2
解决办法
7万
查看次数

初始化或不初始化JPA关系映射?

在一对多的JPA协会中,它被认为是初始化与空集合的关系的最佳实践?例如.

@Entity
public class Order { 

   @Id
   private Integer id;

   // should the line items be initialized with an empty array list or not?
   @OneToMany(mappedBy="order")
   List<LineItem> lineItems = new ArrayList<>();

}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,最好lineItems使用默认值为空来定义ArrayList?优缺点都有什么?

java hibernate jpa openjpa eclipselink

15
推荐指数
1
解决办法
5577
查看次数

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

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

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

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

hibernate jpa openjpa eclipselink datanucleus

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