Tag: jpa

级联和孤儿从数据库中删除有什么区别?

有什么区别 @OneToMany(cascade=REMOVE, mappedBy="customer") public List<Order> getOrders() { … } 和 @OneToMany(mappedBy="customer", orphanRemoval="true") public List<Order> getOrders() { … } 这个例子是从Java EE教程,但我仍然不明白的细节。

为什么人们继续使用XML映射文件而不是注释?

我观察到奇怪的事实(基于hibernate标签中的问题),人们仍然在积极地使用XML文件而不是注释来指定它们的ORM(Hibernate / JPA)映射。 有一些情况下,这是必要的: 您正在使用提供的类,并且想要映射它们。 您正在编写一个API,其域类可以在没有JPA提供程序的情况下使用,因此您不希望强制使用JPA / Hibernate依赖项。 但我认为这些并不常见。 我的假设是: 人们习惯于XML文件,不舒服/不想学习使用注释的方法。 Java 1.5之前的版本被强加在这个项目上,而且没有什么可做的 人们不知道注释是一个全function的XML映射replace。 遗留系统得到支持,因此改变方法被认为是有风险的 人们担心混合注解(元信息)与他们的类是错误的。 任何其他可能的解释?

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

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

如何在JPA中复制Hibernate的saveOrUpdate?

在JPA中,有什么办法可以复制Hibernate的saveOrUpdate行为 , saveOrUpdate public void saveOrUpdate(Object object) throws HibernateException Either save(Object) or update(Object) the given instance, depending upon resolution of the unsaved-value checks (see the manual for discussion of unsaved-value checking). This operation cascades to associated instances if the association is mapped with cascade="save-update". Parameters: object – a transient or detached instance containing new or […]

JPA什么时候设置@GeneratedValue @Id

我有一个简单的JPA实体,它使用生成的“ID”作为主键: @Entity public class Player { private long id; protected Player() { // Do nothing; id defaults to 0L } @GeneratedValue @Id public long getId() { return id; } protected void setId(final long id) { this.id = id; } // Other code } 在这种types的对象的生命周期的某个时刻,JPA必须调用setId()来logging生成的ID值。 我的问题是,这是什么时候发生的,以及说明这一点的文档在哪里 。 我查看了JPA规范,找不到明确的声明。 JPA规范说(重点补充): 托pipe实体实例是具有持久性标识的实例,当前与持久性上下文相关联。 那是不是试图说这个对象必须被pipe理来使其@Id有意义? EntityManager.persist()的文档说(强调添加)它使“一个实例pipe理和持久化”,所以这意味着@Id是由该方法设置? 或者直到你打电话给EntityTransaction.commit() ? 设置@Id对于不同的JPA提供者可能会有所不同,也可能是针对不同的生成策略。 但是,对于已经设定的生命周期中的最早点,您可以做出哪些最安全的(便携式,符合规范的)假设?

JPA和JPA2之间的差异

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

JPA OneToMany和ManyToOne关系

我有三个类的名称是用户和这个用户有其他类的实例。 喜欢这个; public class User{ @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<APost> aPosts; @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<BPost> bPosts; } public class BPost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } public class APost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } 它是这样的工作,但在数据库中生成emty表。 其中必须包含外键。 当我试图使用mappedBy和JoinColumn annotains我失败了。 我该如何解决这个问题? 额外的信息: 当我改变了; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="id") public User user; 和 […]

什么是com.sun.proxy。$ Proxy

我已经看到,当错误发生在不同的框架(例如实现EJB规范的框架或某些JPA提供者)时,栈跟踪包含像com.sun.proxy.$Proxy这样的类。 我知道代理是什么,但我正在寻找更多的技术和更具体的Java的答案。 他们是什么? 他们是如何创build的? 与JVM有什么关系? 他们是JVM实现特定的?

org.hibernate.annotations与javax.persistence

使用注释是不好的主意 javax.persistence包 而不是使用 org.hibernate.annotations注释 我知道使用javax.peristence确实引入了另一个依赖项。 但是如果我忽略这个,有什么优点/缺点?

JPA,如何使用相同的类(实体)映射不同的表?

我有两个表: Ta和Tb 。 他们有完全相同的表结构,但不同的表名称。 我尝试创build一个实体类来映射表结构。 我的一些常用应用程序模块将使用这个实体类根据参数dynamic查询和更新Ta或Tb 。 可以在JPA中完成吗? 我如何编写程序在运行时将实体类dynamic映射到不同的表?