Tag: jpa

JPA – 在persist()之后返回一个自动生成的id

我正在使用JPA(EclipseLink)和Spring。 说我有一个自动生成的ID简单的实体: @Entity public class ABC implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; // … } 在我的DAO类中,我有一个调用此实体上的persist()的插入方法。 我想要的方法返回为新的实体生成的ID,但是当我testing它,而不是返回0 。 public class ABCDao { @PersistenceContext EntityManager em; @Transactional(readOnly=false) public int insertABC(ABC abc) { em.persist(abc); // I WANT TO RETURN THE AUTO-GENERATED ID OF abc // HOW CAN I DO IT? return abc.id; // ??? } […]

HQL或Java持久性查询语言中的IN子句

我有以下参数化的JPA或Hibernate查询: SELECT entity FROM Entity entity WHERE name IN (?) 我想要传递参数作为ArrayList <String>,这可能吗? hibernate电stream告诉我,那 java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String 这可能吗? 解答 :作为参数的集合只能使用像“ :name ”这样的命名参数,而不能使用像“ ? ”这样的JDBC风格参数。

@OneToMany和@ElementCollection之间的区别?

使用@OneToMany和@ElementCollection注释之间有什么区别,因为两者都工作在一对多的关系?

JPA多个embedded式字段

JPA实体类可能包含两个embedded( @Embedded )字段吗? 一个例子是: @Entity public class Person { @Embedded public Address home; @Embedded public Address work; } public class Address { public String street; … } 在这种情况下,一个Person可以包含两个Address实例 – 家庭和工作。 我使用Hibernate的实现JPA。 当我使用Hibernate Tools生成模式时,它只embedded一个Address 。 我想要的是两个embedded式Address实例,每个实例的列名都有区别或者前缀有一些前缀(比如home和work)。 我知道@AttributeOverrides ,但这需要每个属性被单独覆盖。 如果embedded对象( Address )变大,因为每列都需要被单独覆盖,这会变得很麻烦。

如何在JPA中创build和处理复合主键

我想要从相同的数据input版本。 换句话说,我想复制与另一个版本号的条目。 id – 版本将是主键。 实体应该如何? 我怎样才能复制与另一个版本? id Version ColumnA 1 0 Some data 1 1 Some Other data 2 0 Data 2. Entry 2 1 Data

使用JPA / EJB代码“分离的实体传递给持久性错误”

我试图运行这个基本的JPA / EJB代码: public static void main(String[] args){ UserBean user = new UserBean(); user.setId(1); user.setUserName("name1"); user.setPassword("passwd1"); em.persist(user); } 我得到这个错误: javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database 有任何想法吗? 我在互联网上search,我发现的原因是: 这是由你如何创build的对象,即如果你明确设置ID属性。 删除ID分配固定它。 但是我没有得到它,我需要修改哪些代码才能运行?

在Spring数据jpa中save和saveAndFlush之间的区别

我正在尝试通过JpaRepositorytesting一些CRUD操作来学习Spring数据JPA。 我遇到了两个方法save和saveAndFlush 。 我不明白这两者之间的区别。 在调用save也我的变化被保存到数据库,所以saveAndFlush的使用是saveAndFlush 。

Spring Boot JPA – configuration自动重新连接

我有一个不错的小弹簧引导jpa web应用程序。 它被部署在亚马逊豆茎上,并使用亚马逊rds来保存数据。 然而,经常会有这样一个例外,那里不是那么经常使用的: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 79,870,633 milliseconds ago. The last packet sent successfully to the server was 79,870,634 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server […]

configurationhibernate(使用JPA)来存储布尔types的Y / N而不是0/1

我可以设置JPA / hibernate作为Y/N持久Booleantypes吗? 在数据库中(该列定义为varchar2(1) ,当前存储为0/1 ,数据库为Oracle。

REFRESH和MERGE在数据库方面意味着什么?

我很好奇,需要快速find答案。 谷歌帮不了多less忙。 Java持久性API具有这些属性,可以告诉框架级联关联实体的操作: CascadeType.PERSIST CascadeType.DELETE CascadeType.MERGE CascadeType.REFRESH 我知道前两个是什么意思:当我坚持有B的对象A时,坚持B,当我删除A时,也删除B. 但我无法理解其他两个人的成就。 帮帮我?