Tag: jpa 2.0

JPA:何时select多值关联与元素集合映射

我想更好地理解之间的差异 (1)传统的多值关系/关联 @Entity -> @OneToMany -> @Entity 和 (2) embedded式(和基本)types的JPA2 集合 @Entity -> @ElementCollection -> @Embeddable 我看到了语法上的差异,但不知道是否也有性能影响 。 在引擎盖下,数据库实现看起来非常相似。 直觉上,我通常使用@ElementCollection 组合场景 。 但即使如此,感觉非常类似CascadeType=DELETE 。 我在这里错过了本质吗? 为了某些目的,一个比另一个更有效率吗? 谢谢J.

JPA和JPA2之间的差异

有没有人有JPA 1和JPA 2之间的变化列表? 我已经阅读了关于Criteria查询和其他更改,但我想要一个“有什么新的”types的参考。 谢谢

Hibernate JPA,MySQL和TinyInt(1)用于Boolean而不是bit或char

这是我的JPA2 / Hibernate的定义: Code: @Column(nullable = false) private boolean enabled; 在MySql中,这个列被parsing为一个位(1)数据types – 这对我不起作用。 对于遗留问题,我需要将布尔值映射到tinyint。 但我没有看到更改默认数据types的可能性。 有没有?

JPA CriteriaBuilder – 如何使用“IN”比较运算符

你能帮我如何将下面的代码转换为使用标准构build器的“in”运算符? 我需要通过使用“in”使用列表/数组的用户名进行过滤。 我也尝试使用JPA CriteriaBuilder进行search – “in”方法但是找不到好的结果。 所以,如果你能给我这个主题的参考url,我真的很感激。 谢谢。 这是我的代码: //usersList is a list of User that I need to put inside IN operator CriteriaBuilder builder = getJpaTemplate().getEntityManagerFactory().getCriteriaBuilder(); CriteriaQuery<ScheduleRequest> criteria = builder.createQuery(ScheduleRequest.class); Root<ScheduleRequest> scheduleRequest = criteria.from(ScheduleRequest.class); criteria = criteria.select(scheduleRequest); List<Predicate> params = new ArrayList<Predicate>(); List<ParameterExpression<String>> usersIdsParamList = new ArrayList<ParameterExpression<String>>(); for (int i = 0; i < […]

JPA /标准API – 像和平等的问题

我试图在我的新项目中使用Criteria API: public List<Employee> findEmps(String name) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Employee> c = cb.createQuery(Employee.class); Root<Employee> emp = c.from(Employee.class); c.select(emp); c.distinct(emp); List<Predicate> criteria = new ArrayList<Predicate>(); if (name != null) { ParameterExpression<String> p = cb.parameter(String.class, "name"); criteria.add(cb.equal(emp.get("name"), p)); } /* … */ if (criteria.size() == 0) { throw new RuntimeException("no criteria"); } else if (criteria.size() […]

JPAhibernate多对多级联

我正在使用JPA 2.0和hibernate。 我有一个User类和一个Group类,如下所示: public class User implements Serializable { @Id @Column(name="USER_ID") private String userId; @ManyToMany @JoinTable(name = "USER_GROUP", joinColumns = { @JoinColumn(name = "GROUP_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") } ) private Set<Group> groupList; //get set methods } public class Group { @Id @Column(name="GROUP_ID") private String groupId; @ManyToMany(mappedBy="groupList") private Set<User> memberList; //get set […]

您使用哪种Javatypes来进行JPA集合,为什么?

您在JPA域模型中使用以下哪种集合types,原因如下: java.util.Collection java.util.List java.util.Set 我想知道这是否有一些基本的规则。 更新我知道Set和List之间的区别。 List允许重复,并有一个顺序和一个Set不能包含重复的元素,并没有定义顺序。 我在JPA的背景下提出这个问题。 如果您严格遵循定义,那么您应始终使用Settypes,因为您的集合存储在关系数据库中,在那里您不能有重复项,并且您自己定义了一个顺序,即您的顺序Java List不一定保存在数据库中。 例如,大多数时候我使用Listtypes,不是因为它有一个顺序或允许重复(我不能有),因为我的组件库中的一些组件需要一个列表。

如何使用JPA2的@Cacheable而不是Hibernate的@Cache

通常,我使用Hibernate的@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)来caching一个@Entity类,它运行良好。 在JPA2中,还有另外一个@Cacheable注释,看起来和Hibernate的@Cache有相同的function。 为了让我的实体类独立于Hibernate的包,我想试试看。 但是我不能使它工作。 每次简单的ID查询仍然击中数据库。 谁能告诉我哪里出了问题? 谢谢。 实体类: @Entity //@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Cacheable(true) public class User implements Serializable { // properties } testing课: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:app.xml"}) @TransactionConfiguration(transactionManager="transactionManager") public class UserCacheTest { @Inject protected UserDao userDao; @Transactional @Test public void testGet1() { assertNotNull(userDao.get(2L)); } @Transactional @Test public void testGet2() { assertNotNull(userDao.get(2L)); } @Transactional @Test public […]

Java EE架构 – 在使用像JPA 2这样的ORM时,DAO仍然是推荐的吗?

如果我使用的是像JPA2那样的ORM – 我的实体映射到了我的数据库,那么我还应该使用DAO吗? 这似乎是更多的开销。 例如,我需要维护三个额外的软件包: 一个指定我的域对象(这几乎映射我的实体对象): public class Employee { private String firstName; private String lastName; … // Getters and setters } 一个包含指定我的DAO方法的接口 public interface EmployeeDAO { public void addEmployee(Employee employee); public Employee getEmployeeById(long id); … } 一个包含实现我的DAO的会话bean public EmployeeJpaDAO implements EmployeeDAO { interface method implementations here …. private method that transform my Employee entity […]

我如何validation两个或多个字段的组合?

我正在使用JPA 2.0 / Hibernatevalidation来validation我的模型。 我现在有一个情况需要validation两个字段的组合: public class MyModel { public Integer getValue1() { //… } public String getValue2() { //… } } 如果getValue1()和getValue2()都为null ,则该模型无效 ,否则为有效。 我如何使用JPA 2.0 / Hibernate执行这种validation? 用一个简单的@NotNull注解,两个getter必须是非空的才能通过validation。