Questions tagged «jpa»

Java Persistence API(JPA)是Java规范,用于访问,持久化和管理Java对象/类与关系数据库之间的数据。它是EJB 3.0规范的一部分,并且是对象到关系映射(ORM)的行业标准方法。

6
双向JPA OneToMany / ManyToOne关联中的“关联的反面”是什么?
在@OneToManyJPA注释参考的示例部分中: 示例1-59 @OneToMany-具有泛型的客户类 @Entity public class Customer implements Serializable { ... @OneToMany(cascade=ALL, mappedBy="customer") public Set<Order> getOrders() { return orders; } ... } 示例1-60 @ManyToOne-具有泛型的Order类 @Entity public class Order implements Serializable { ... @ManyToOne @JoinColumn(name="CUST_ID", nullable=false) public Customer getCustomer() { return customer; } ... } 在我看来,Customer实体是协会的所有者。但是,在mappedBy同一文档中对属性的解释中写道: 如果关系是双向的,则将关联的反(非所有权)侧的maptedBy元素设置为拥有该关系的字段或属性的名称,如示例1-60所示。 但是,如果我没有记错的话,那么在示例中,mappedBy实际上是在关联的拥有方而不是非拥有方中指定的。 所以我的问题基本上是: 在双向(一对多/多对一)关联中,所有者是哪个实体?我们如何指定一方为所有者?我们如何指定“多方”作为所有者? “关联的反面”是什么意思?我们如何将一侧指定为逆?我们如何将“多面”指定为反面?

10
如何将Hibernate代理转换为真实实体对象
在Hibernate期间Session,我正在加载一些对象,由于延迟加载,它们中的一些已作为代理加载。一切正常,我不想关闭延迟加载。 但是稍后我需要通过RPC将一些对象(实际上是一个对象)发送到GWT客户端。碰巧这个具体对象是代理。所以我需要将其变成一个真实的对象。我在Hibernate中找不到类似“实现”的方法。 我如何才能将某些对象从代理变为真实,从而知道它们的类和ID? 目前,我看到的唯一解决方案是从Hibernate的缓存中逐出该对象并重新加载它,但是由于许多原因,它确实很糟糕。

12
如何在JPA中持久保存List <String>类型的属性?
获取具有持久性类型List的实体的最聪明方法是什么? Command.java package persistlistofstring; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Persistence; @Entity public class Command implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Basic List&lt;String&gt; arguments = new ArrayList&lt;String&gt;(); public static void main(String[] args) { Command …
158 java  orm  jpa 

7
JPA OneToMany不删除子级
我对@OneToMany父实体和子实体之间的简单映射有疑问。一切正常,只有当我从集合中删除子记录时,才会删除它们。 父母: @Entity public class Parent { @Id @Column(name = "ID") private Long id; @OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent") private Set&lt;Child&gt; childs = new HashSet&lt;Child&gt;(); ... } 孩子: @Entity public class Child { @Id @Column(name = "ID") private Long id; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name="PARENTID", nullable = false) private Parent …
158 java  jpa  jpa-1.0 

16
如何查看JPA发出的SQL查询?
当我的代码发出这样的调用时: entityManager.find(Customer.class, customerID); 如何查看此调用的SQL查询?假设我无权访问数据库服务器来分析/监视调用,是否可以在IDE中记录或查看JPA调用发出的相应SQL查询?我要使用jTDS驱动程序反对SQL Server 2008 R2。
155 java  jpa 

7
当使用getOne和findOne方法时Spring Data JPA
我有一个用例,其中它调用以下内容: @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl getUserControlById(Integer id){ return this.userControlRepository.getOne(id); } 观察@Transactionalhas具有Propagation.REQUIRES_NEW,并且存储库使用getOne。当我运行该应用程序时,我收到以下错误消息: Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session ... 但是,如果我改变getOne(id)的findOne(id)一切工作正常。 顺便说一句,在用例调用getUserControlById方法之前,它已经调用了insertUserControl方法 @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl insertUserControl(UserControl userControl) { return this.userControlRepository.save(userControl); } 这两种方法都是Propagation.REQUIRES_NEW,因为我正在执行简单的审核控制。 我使用该getOne方法是因为它是在JpaRepository接口中定义的,并且我的Repository接口从那里扩展,所以我正在使用JPA。 该JpaRepository接口扩展自CrudRepository。该findOne(id)方法在中定义CrudRepository。 我的问题是: 为什么该getOne(id)方法失败? 什么时候应该使用该getOne(id)方法? 我正在使用其他存储库,并且都使用该getOne(id)方法并且都正常工作,只有当我使用Propagation.REQUIRES_NEW时,它才会失败。 根据getOne API: 返回对具有给定标识符的实体的引用。 根据findOne API: 通过其ID检索实体。 3)什么时候应该使用该findOne(id)方法? …

4
请参考JPA @Column注释解释有关insertable = false和updatable = false的信息
如果对字段进行了注释insertable=false, updatable=false,这是否意味着您不能插入值或更改现有值?你为什么想这么做? @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy="person", cascade=CascadeType.ALL) private List&lt;Address&gt; addresses; } @Entity public class Address { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name="ADDRESS_FK") @Column(insertable=false, updatable=false) private Person person; }

14
JPA实体何时以及为何应实现Serializable接口?
问题在标题中。下面我仅描述了我的一些想法和发现。 当我有一个非常简单的域模型(3个表没有任何关系)时,我所有的实体都没有实现Serializable。 但是,当域模型变得更加复杂时,我遇到了RuntimeException,它表示我的一个实体没有实现Serializable。 我使用Hibernate作为JPA实现。 我想知道: 它是特定于供应商的要求/行为吗? 我的可序列化实体会怎样?它们应该可序列化以存储或传输吗? 在什么时候有必要使我的实体可序列化?

29
没有命名为EntityManager的持久性提供程序
我在目录下persistence.xml使用相同的名字。然后,我用以下代码调用它:TopLinkMETA-INF EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb"); 但是,我收到以下错误消息: 2009-07-21 09:22:41,018 [main]错误-名为agisdb的EntityManager没有持久性提供程序 javax.persistence.PersistenceException:名为ag​​isdb的EntityManager的持久性提供程序 在javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89) 在javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60) 这是persistence.xml: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"&gt; &lt;persistence-unit name="agisdb"&gt; &lt;class&gt;com.agis.livedb.domain.AddressEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficCameraEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficPhotoEntity&lt;/class&gt; &lt;class&gt;com.agis.livedb.domain.TrafficReportEntity&lt;/class&gt; &lt;properties&gt; &lt;property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/&gt; &lt;property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt; &lt;property name="toplink.jdbc.user" value="root"/&gt; &lt;property name="toplink.jdbc.password" value="password"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt; 它应该在类路径中。但是,我得到了上面的错误。
148 java  jpa  persistence  toplink 

7
如何在Spring Controller中获取与JPA和Hibernate的FetchType.LAZY关联
我有一个Person类: @Entity public class Person { @Id @GeneratedValue private Long id; @ManyToMany(fetch = FetchType.LAZY) private List&lt;Role&gt; roles; // etc } 与多对多的关系是懒惰的。 在我的控制器中 @Controller @RequestMapping("/person") public class PersonController { @Autowired PersonRepository personRepository; @RequestMapping("/get") public @ResponseBody Person getPerson() { Person person = personRepository.findOne(1L); return person; } } 而PersonRepository只是根据本指南编写的代码 public interface PersonRepository extends …

14
Spring JPA选择特定列
我正在使用Spring JPA执行所有数据库操作。但是我不知道如何从Spring JPA的表中选择特定的列? 例如: SELECT projectId, projectName FROM projects

3
JPA和Spring Data JPA有什么区别?
我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久保存到关系数据库的规范。 换句话说,JPA提供接口和其他ORM技术,实现那些称为JPA提供程序的接口,例如Hibernate。 现在,Spring Data JPA到底是什么? Spring Data JPA是否在JPA之上添加了更多功能(接口),并且仍然仅被指定还是JPA提供者? 我看到Spring Data JPA围绕存储库工作(DAO层:如果我没记错的话)。因此,我的意思是,使用“ Spring Data JPA + Hibernate”或仅使用“ Hibernate”定向有何不同?


18
休眠JPA序列(非ID)
是否可以对不是标识符/不属于复合标识符的某些列使用数据库序列? 我正在使用hibernate作为jpa提供程序,并且我有一个表,其中包含一些生成的值(使用序列)的列,尽管它们不是标识符的一部分。 我想要的是使用序列为实体创建新值,其中该序列的列不是主键(的一部分): @Entity @Table(name = "MyTable") public class MyEntity { //... @Id //... etc public Long getId() { return id; } //note NO @Id here! but this doesn't work... @GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen") @SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE") @Column(name = "SEQ_VAL", unique = false, nullable = …
138 java  hibernate  jpa  sequence 

17
Spring Boot-不是托管类型
我使用Spring boot + JPA,启动服务时遇到问题。 Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219) at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.&lt;init&gt;(JpaMetamodelEntityInformation.java:68) at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) 这是Application.java文件, @Configuration @ComponentScan @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication public class DialerApplication { …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.