Questions tagged «hibernate»

Hibernate是一种Java语言的对象关系映射(ORM)库,使开发人员能够以远远超出对象/关系映射的方式在其应用程序中使用POJO风格的域模型。

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

7
如何在Spring Controller中获取与JPA和Hibernate的FetchType.LAZY关联
我有一个Person类: @Entity public class Person { @Id @GeneratedValue private Long id; @ManyToMany(fetch = FetchType.LAZY) private List<Role> 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 …


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”定向有何不同?

8
一对多,多对一和多对多的区别?
好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: public class Person{ private Long personId; private Set<Skill> skills; //Getters and setters } public class Skill{ private Long skillId; private String skillName; //Getters and setters } 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使用联接表与联接列以及单向与双向的概述。


30
Hibernate-批更新从更新返回意外行数:0实际行数:0预期值:1
我收到以下休眠错误。我能够确定导致问题的功能。不幸的是,函数中有多个数据库调用。由于休眠在事务结束时刷新会话,因此我找不到导致问题的行。下面提到的休眠错误看起来像是一般错误。甚至都没有提到哪个Bean导致了问题。有人熟悉这个休眠错误吗? org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:93) at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:79) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransacti onManager.java:500) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManag er.java:473) at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(Transaction AspectSupport.java:267) …
140 java  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 

3
@ManyToOne属性上不允许使用@Column
我有一个JPA实体,其属性设置为 @ManyToOne @Column(name="LicenseeFK") private Licensee licensee; 但是,当我在JBoss 6上进行部署时,该应用程序将引发错误消息: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property 我使用Hibernate 3.5作为JPA 2.0实现。 我应该使用什么来引用外键列?

4
单向和双向JPA和Hibernate关联之间有什么区别?
单向和双向关联有什么区别? 由于在db中生成的表都是相同的,所以我发现的唯一区别是双向关联的每一侧都有一个引用,而单向则没有。 这是单向关联 public class User { private int id; private String name; @ManyToOne @JoinColumn( name = "groupId") private Group group; } public class Group { private int id; private String name; } 双向关联 public class User { private int id; private String name; @ManyToOne @JoinColumn( name = "groupId") private …


11
JPA CascadeType.ALL不会删除孤儿
我在使用带有以下映射的JPA删除孤立节点时遇到问题 @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner") private List<Bikes> bikes; 我遇到了孤立角色挂在数据库周围的问题。 我可以使用org.hibernate.annotations.Cascade特定于注释的Hibernate标记,但是显然我不想将解决方案绑定到Hibernate实现中。 编辑:似乎JPA 2.0将包括对此的支持。
132 java  hibernate  orm  jpa  jpa-2.0 


11
使用JPA的Kotlin:默认构造函数地狱
根据JPA的要求,@Entity类应具有默认的(非arg)构造函数,以在从数据库中检索对象时实例化这些对象。 在Kotlin中,可以很方便地在主构造函数中声明属性,如以下示例所示: class Person(val name: String, val age: Int) { /* ... */ } 但是,当将非arg构造函数声明为辅助构造函数时,它要求传递主要构造函数的值,因此需要一些有效值,例如: @Entity class Person(val name: String, val age: Int) { private constructor(): this("", 0) } 在情况下,当性能有一些更复杂的类型不只是String和Int他们是不可为空的,它看起来完全坏为他们提供价值,尤其是当有在主构造和太多的代码init块,当正在积极使用的参数- -当通过反射重新分配它们时,大多数代码将再次执行。 此外,val在构造函数执行后无法重新分配-properties,因此也失去了不变性。 所以问题是:如何在不进行代码重复,选择“魔术”初始值和丧失不变性的情况下使Kotlin代码适用于JPA? PS是真的,除了JPA之外,Hibernate可以使用默认构造函数构造对象吗?

5
休眠openSession()vs getCurrentSession()
我对在JSP Web应用程序中使用Hibernate有一些疑问。 它的价值是hibernate.current_session_context_class什么? 然后,应使用以下哪个语句?又为什么呢 Session s = HibernateUtil.getSessionFactory().openSession(); Session s = HibernateUtil.getSessionFactory().getCurrentSession() 最后,“每个网络应用一个会话”还是“每个请求一个会话”哪个更好?
130 java  hibernate 

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.