草庐IT

java - 在 Spring 中将 JPA EntityManager 和 Hibernate session 与共享事务管理器一起使用

我们处境艰难。有一个大型项目使用了hibernate的特殊功能,因此无法退出hibernate。我们将以嵌入式模式将Activiti流程引擎添加到项目中并使用JPA扩展(仅适用于EntityManager)某些实体不应出现在JPA持久单元中,因为正如activiti文档所说,所有实体都必须具有@Id且不能使用@IdClass/@EmbeddedId,因此我们必须从持久单元中排除此类实体我们希望为EntityManager和Session使用一个共享的事务管理器。此外,数据源是相同的(甚至是共享的)万物皆春!所有这些努力都是为了让Activiti能够将EntityManager用于其JP

java - Hibernate 和 JPA 级联类型何时使用哪一个以及在哪里

我在一个项目中使用Hibernate,我对何时使用org.hibernate.annotations.CascadeType以及何时使用javax.persistence.CascadeType注释感到非常困惑。例如当我应该使用这样的东西时:@OneToMany(fetch=FetchType.LAZY,cascade=javax.persistence.CascadeType.ALL)与这样的东西相比:@OneToMany(fetch=FetchType.LAZY)@Cascade(org.hibernate.annotations.CascadeType.ALL)我还读到hiber

java - 获取 "java.lang.UnsupportedOperationException:"

我创建了小型JPA项目来保存学生记录。我使用Oracle数据库。我使用OpenJPA作为JPa提供程序。我已经正确创建了Tablestudent和相关序列。学生实体类@Entity@Table(name="Student")publicclassStudentimplementsSerializable{privateintid;privateStringname;privatestaticfinallongserialVersionUID=1L;publicStudent(){super();}@Id@Column(name="ID")@SequenceGenerator(name=

java - 使用相同的连接表引用关联实体的子类时,具有该名称 [user_address] 的表已与实体关联

使用SpringBootstarter,我正在尝试创建一个简单的示例项目,该项目涉及具有多个地址字段的用户。我正在尝试使用@DiscriminatorColumn和@DiscriminatorValue来区分用户可能拥有的不同类型的地址。这是我项目中表格的缩略示例:CREATETABLEuser(idINTAUTO_INCREMENT);CREATETABLEuser_address(user_idINT,address_idINT);CREATETABLEaddress(idINTAUTO_INCREMENT,TYPEVARCHAR(31));这是我想加入的类(class):@Ent

java - 动态 JPA 连接

我有一个相当标准的JavaEE6Web应用程序,它使用JPA2并通过依赖注入(inject)连接到MySQL数据库,并且一切正常。我现在想做的是让这个应用程序与我们在客户站点安装的其他应用程序的数据库进行交互——本质上充当我们其他应用程序安装的单一控制点。我正在苦苦挣扎的是如何最好地执行与其他数据库的交互。理想情况下,我想为每次安装创建一个EntityManager并使用JPA进行交互,但我看不到任何设置方法。例如,我可能有一个应用程序类型的5个安装(因此有数据库),而主控制应用程序直到运行时才知道其他安装。这似乎排除了使用EntityManager的依赖注入(inject)和所有自动

java - JPA 和泛型

我想知Prop有泛型的抽象类如何处理JPA?我的意思是该字段需要什么样的注释?考虑这些:@MappedSuperclasspublicabstractclassAbstractMyClass{//WhataboutStringsandIntegers?DoIneedsomekindof@LOB?privateTfield;publicTgetField(){returnfield;}publicvoidsetField(Tfield){this.field=field;}}然后是这些@Entity@Table(name="String")publicclassMyStringClass

java - JPA:EntityManager 的get-use-close 和延迟加载

IBM建议使用EntityManagers的最佳实践是获取/使用/关闭。如果EntityManager没有关闭,同一个EntityManager可能被多个线程使用,这将导致以下错误:org.apache.openjpa.persistence.PersistenceException:Multipleconcurrentthreadsattemptedtoaccessasinglebroker.Bydefaultbrokersarenotthreadsafe;ifyourequireand/orintendabrokertobeaccessedbymorethanonethread,s

java - junit 测试中的 spring-data-jpa bean 验证

在我最近的工作中,我使用spring-data-jpa来利用提供的存储库。当涉及到集成测试时,我无法配置(我假设)用于测试的spring上下文,因此bean验证在我的测试中不起作用。我知道我可以注入(inject)validator,并对我的注释进行单元测试,但事实并非如此。我正在编写集成测试,并希望测试有数据库支持的存储库。我准备了一个简单的项目来展示所有必要的项目文件。当我运行测试时,有2个失败了,我不知道为什么,hibernatevalidator出现在类路径上。Failedtests:insertWrongEmail(com.example.core.data.jpa.User

java - 在 JPA 中将实体添加到大型多对多关系中

我有一个Group实体,其中包含多对多关系中的User实体列表。它由包含两个ID的典型连接表映射。这个列表可能非常大,一个组中有一百万或更多的用户。我需要向组中添加一个新用户,通常是这样的group.getUsers().add(user);user.getGroups().add(group);em.merge(group);em.merge(user);如果我了解典型的JPA操作,这是否需要将超过100万用户的整个列表拉到集合中以便添加新用户然后保存?对我来说,这听起来不太可扩展。我不应该在JPA中定义这种关系吗?在这种情况下,我应该直接操作连接表条目吗?请原谅松散的语法,我实际上

java - 如何在 JPQL 中引用仅为连接映射的列?

假设我有以下两个表:@EntitypublicclassFoo{@Idprivateintid;@ManyToOne()@JoinColumn(name="bar_id")privateBarbar;}@EntitypublicclassBar{@Idprivateintid;privateBooleanflag;}我想编写一个JPQL查询,它根据Fooid的集合更改一些Bar.flag值。如果这是纯SQL,我会这样写:UPDATEBarSETflag=trueWHEREidIN(SELECTbar_idfromFOOwhereid=3);但是,您不能将其转换为JPQL,因为bar_i