Tag: jpa

当使用JtaTransactionManager时,为什么使用未在Spring服务中提交的EntityManager进行JPA更改?

我需要在Spring Service使用org.springframework.transaction.jta.JtaTransactionManager作为我的TransactionManager 。 但是,它不会对JPA实体进行任何更改。 我知道,如果我使用JpaTransactionManager它的工作原理。 但是,我需要JtaTransactionManager 。 所以,请不要建议使用JpaTransactionManager 。 我的Spring Service类是: package testspring.view; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import testspring.model.Regions; @Service public class HelloBS { @PersistenceContext private EntityManager entityManager; public HelloBS() { super(); } @Transactional() public void doSomething() { Regions region = new Regions(); region.setRegionName(“Antarctica”); entityManager.persist(region); } } 我的Spring xml配置是: org.hibernate.dialect.Oracle10gDialect AUTO […]

Spring Data Jpa查询DSL Q实体类没有生成

这是pom.xml的要点。 我使用的查询dsl版本是3.6.2 com.mysema.querydsl querydsl-core com.mysema.querydsl querydsl-apt com.mysema.querydsl querydsl-jpa org.bsc.maven maven-processor-plugin 2.2.4 ${project.build.directory}/generated-sources org.mapstruct.ap.MappingProcessor process generate-sources process org.mapstruct mapstruct-processor ${mapstruct.version} com.mysema.maven maven-apt-plugin 1.0.2 generate-sources process target/generated-sources/querydsl com.mysema.query.apt.jpa.JPAAnnotationProcessor 每当我运行mvn clean install时,就会发生此exception消息 [ERROR] diagnostic: C:\Users\users\app\app-ims\app-ims-core\src\main\java\org\app\genesis\inventory\repo\ProductRepoImpl.java:6: error: cannot find symbol import org.brightworks.genesis.inventory.model.QProduct; ^ symbol: class QProduct location: package org.app.genesis.inventory.model 这是class上的要点。 import com.mysema.query.jpa.impl.JPAQuery; import com.mysema.query.types.ConstructorExpression; import org.brightworks.genesis.inventory.dto.ProductDTO; import org.brightworks.genesis.inventory.model.QProduct; import […]

代理如何加载Hibernate / JPA中的惰性属性

好吧,我的疑问很简单:为了获得最佳性能,建议在我不需要使用的属性中使用始终延迟初始化(这很明显)。 那么,想象下面的课程: @Entity public class Person{ @Column private String name; @ManyToOne(fetch = FetchType.Lazy) @JoinColumn(name = “id_type”) private TypePerson type; } 在我的主类中,我调用具有“type”属性的Person未初始化,如下: public void init(){ //in this point “type” attribute is not initialized Person person = dao.find(“Select * from Person where id = 12”); //proxys work here to get description of “type” attribute System.out.println(person.getType().getDescription()); } 因此,我从dataBase获取一个简单的Person对象,并在控制台上打印人的类型。 […]

Spring数据JPA:如何启用级联删除而不引用父级中的子级?

也许这是一个过于简单的问题,但是当我尝试删除用户实体时,我遇到了exception。 用户实体: @Entity @Table(name = “users”) public class User { @Transient private static final int SALT_LENGTH = 32; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @NotNull private String firstName; @NotNull private String lastName; @Column(unique = true, length = 254) @NotNull private String email; // BCrypt outputs 60 character results. @Column(length = 60) private String hashedPassword; […]

如果我在Hibernate中使用JPA,我的项目应该具有哪些依赖项?

我使用JPA和Hibernate作为它的实现。 我需要在项目中使用哪些maven2依赖项?

具有多个服务器的JPA

我目前正在开发一个使用JPA(Toplink,目前)持久化的项目。 目前,我们正在运行单个应用程序服务器,但是,为了实现冗余,我们希望添加一个负载均衡器和另一个应用程序服务器(并且可能随着它的增长而增加)。 首先,我遇到了JPA缓存问题。 由于两个进程将更新同一个数据库,因此JPA缓存将返回缓存的值而不是返回数据库。 我看到如何关闭它,数据库本身实现了一个级别的缓存。 完全关闭缓存的方式去这里? 我看到告诉JPA始终从查询级别的数据库获取的方法,但在多服务器环境中,似乎您总是希望这种情况发生。 除了这个特定问题,我对那些已经实现了具有多个应用程序服务器的JPA解决方案以及在实现过程中出现的问题(以及您提出的任何建议)的任何人感兴趣。 非常感谢。

JPA Criteria Query API并且最后按null排序

我的问题是空值必须是最后一个按语句排序。 我的代码在下面拍了一下。 我使用javax持久标准构建器。 我的查询很复杂。 import javax.persistence.criteria.CriteriaBuilder; public Predicate getSomePredicate() { Predicate predicate = cb.conjunction();…. …predicate.getExpressions().add(cb.and(cb.or(cb.and(v1, v2), cb.and(s1, s2)))); EOrderByType orderType = EOrderByType.values()[orderBy] ; switch (orderType) { case PRICE: cq.where(predicate).orderBy(cb.asc(root.get(“price”))); break; case PRICE_HIGH_TO_LOW: cq.where(predicate).orderBy(cb.desc(root.get(“price”))); break; case CONSUPTION: cq.where(predicate).orderBy(cb.desc(root.get(“consume”))); break; default: break; } return cq.getRestriction(); } 如何使用条件生成器按价格实现订单空?

学习Hibernate的好书或在线资源

到目前为止我发现的是一些像这样的在线资源: http://www.torsten-horn.de/techdocs/java-hibernate.htm(GER ) https://www.hibernate.org/5.html(Hibernate Docs) http://docs.jboss.org/hibernate/stable/core/reference/en/html/tutorial.html http://www.manning.com/bauer2/chapter2.pdf(Java Persistence with Hibernate的示例章节) http://www.wenzlaff.de/hibernate.html(GER ) 这是一个很好的开始,但我想知道你是否可以推荐任何好书来学习Hibernate,或者你知道其他一些非常好的在线资源来学习它吗?

使用JPA / Spring的(通用)DDD存储库的方法:它看起来不对吗?

我对DDD和JPA很新。 我正在使用JPA和Spring开发通用存储库。 我非常喜欢文章DDD中公开的方法:通用存储库和JPA实现模式:数据访问对象 。 我的目标是使用JPA和Spring在域驱动设计中构建完美的存储库。 在第一篇文章概念之后,我使用内部通用存储库来尊重域与数据存储的契约 。 public interface IInternalGenericRepository { List read(String query, Object[] params); void persist(E entity); void remove(E entity); } public class InternalGenericRepository implements IInternalGenericRepository { // Injected through DI in Spring @PersistenceContext private EntityManager em; private final Class entityClass; public List read(String query, Object[] params) { Query q = em.createQuery(query); for […]

使用JPA / ORM生成db模式是个坏主意吗?

药膏! 关于SO的另一个问题/答案的一部分 (以及声称相同的其他陈述): 如果您通过JPA更新数据库模式(通常不是一个好习惯) 您是否应该使用JPA实现来生成数据库模式? 无论如何,我必须自己模拟实体和关系。 我需要定义约束,如notnull,主键和外键,数据类型和大小。 假设正在使用的JPA实现在其DDL模式创建代码中没有任何缺陷,并且假设我确实正确地指定了所有JPA约束,关系等,那么由JPA实现创建的db模式应该完全相同 – 如果不是更好 – 作为我自己手工制作的架构,对吧? 这不包括“特殊情况”,例如(业务逻辑)特定的INSERT触发器等,因为这些根本不能由JPA实现生成(据我所知,如果我错了,请纠正我)。 你对此有何看法? 我现在首先手工编写我的数据库模式,然后设置JPA约束,关系等,让JPA实现也创建一个数据库模式。 然后我比较两个模式,看看我是否正确完成了设置。 这当然意味着我还必须指定与我手工模式相同的列名等。 使我的问题更加准确; 我并不盲目信任ORM框架来为我生成架构。 我宁愿知道模式在我的脑海中如何看待,然后配置框架以匹配它。 我想你只能手工创建更多/最有效的架构,但毕竟我需要(或者更愿意)将它们与ORM框架一起使用。 因此,虽然我不应该这样做,但是在创建数据库模式时,我需要牢记ORM框架的局限性。 因此,我使用ORM框架以便不必关心RDBMS细节,让我的应用程序使用特定于RDBMS的DDL创建模式的重点是什么? 如果我必须使用一些现有的和异乎寻常的模式,我不需要(重新)创建模式,以及我可能无法使用这样的通用工具作为ORM框架。