相关疑难解决方法(0)

JPA/Metamodel:Sun Docs中的奇怪(不一致?)示例

Sun Online资源中,他们提供了关于Criteria/Metamodel API使用的儿子示例,但据我了解Java,似乎无法工作:

CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Metamodel m = em.getMetamodel();
EntityType<Pet> Pet_ = m.entity(Pet.class);
EntityType<Owner> Owner_ = m.entity(Owner.class);

Root<Pet> pet = cq.from(Pet.class);
Join<Owner, Address> address = cq.join(**Pet_.owners**).join(**Owner_.addresses**);
Run Code Online (Sandbox Code Playgroud)

Pet_是一个类的实例, EntityType没有定义任何名为owners或的属性addresses.

他们确实定义了名为Pet_Owner_元模型的类,但是在这里输入它们会产生与变量名称的冲突......我是对的吗?

__

(这个问题也与此相关的一个)

java jpa criteria-api metamodel jpa-2.0

11
推荐指数
1
解决办法
3298
查看次数

单元测试时静态元模型属性为null

我在外部包中有@Entity类,它们也有静态元模型.在我的应用程序的服务类中,我使用这些元模型和EntityManager/CriteriaBuilder/CriteriaQuery来检索我的数据.这在运行应用程序时工作正常.但是,在运行单元测试时,我的元模型及其属性始终为null.

码...

package com.example.core.entities;

@Entity
@Table(schema = "lookup", name="BookingSystem")
public class BookingSystem implements ILookupEntity, IAuditEntity, Serializable {
  @Id
  @GeneratedValue(strategy = IDENTITY)
  @Column(name = "id")
  public Integer id;

  @Column(name = "name")
  public String name;

  @Column(name = "code")
  public Integer code;
}

package com.example.core.entities;

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(BookingSystem.class)
public abstract class BookingSystem_ {
  public static volatile SingularAttribute<BookingSystem, Integer> id;
  public static volatile SingularAttribute<BookingSystem, Integer> code;
  public static volatile SingularAttribute<BookingSystem, String> name;
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的服务类中使用...

package com.example.bookingsystem;

@Service
public class BookingService {
  @PersistenceContext
  private …
Run Code Online (Sandbox Code Playgroud)

java testng jpa

10
推荐指数
2
解决办法
2001
查看次数

Hibernate/JPA - 访问SingularAttribute参数时出现NullPointerException

我正在尝试使用Hibernate 5.0.7.Final的JPA2类型安全条件查询.

...
criteria.where( builder.equal( root.get(SingularAttribute.attr), value ));
//where parameters are
//criteria.where( builder.equal( root.get(Person_.name), "Can" ));
...
Run Code Online (Sandbox Code Playgroud)

root.get总是抛出NullPointerException.元模型类Person_用于Person通过产生org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.

JPA/Hibernate Static Metamodel Attributes not Populated中提出了类似的问题- NullPointerException,但这次两个类都在同一个包中.

堆栈跟踪:

java.lang.NullPointerException
at org.hibernate.jpa.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:123)
Run Code Online (Sandbox Code Playgroud)

我的代码:

我用来确保它们具有的接口getId();.

package it.unibz.db.hibernate.model;

public interface ModelInterface<PK extends Serializable> extends Serializable {
    PK getId();
}
Run Code Online (Sandbox Code Playgroud)

模型类

package it.unibz.db.hibernate.model;

@Entity
@Table(name ="person")
public class Person implements ModelInterface<Integer> {
    @Id
    private Integer id;
    private String name;

    public Integer getId() …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa maven metamodel

8
推荐指数
1
解决办法
2836
查看次数

org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.get中的NullPointerException

这很好用:

 public Predicate toPredicate(Root<Campaign> root,
    CriteriaQuery<?> query, CriteriaBuilder cb) {
    return root.get("campState").get("statusId").in(campStatus);
}
Run Code Online (Sandbox Code Playgroud)

但我改为:

 return  root.get(Campaign_.campState).get(CampState_.campId).in(campStatus).
Run Code Online (Sandbox Code Playgroud)

它抛出异常:

编辑:org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.get中的NullPointerException

  @StaticMetamodel(Campaign.class)
  public class Campaign_ {
  public static volatile SingularAttribute<Campaign, CampState> campState;
  public static volatile SingularAttribute<Campaign, Long> campId;
  }

  @StaticMetamodel(CampState.class)
  public class CampState_ {
  public static volatile SingularAttribute<CampState, String> statusId;
  }

  Campaign.class
  @ManyToOne(cascade = {CascadeType.REFRESH, CascadeType.MERGE})
  @JoinColumn(name = "camp_status")
  public CampState getCampState() {
    return campState;
  }

  public void setCampState(CampState campState) {
    this.campState = campState;
  }
Run Code Online (Sandbox Code Playgroud)

java jpa predicate nullpointerexception criteria-api

6
推荐指数
1
解决办法
2819
查看次数