Tag: orm

在Hibernate中映射多级inheritance

目前我有这样的结构: A | +–B | +–C 它使用连接表映射每个子类一个表。 由于历史原因,我也使用鉴别器,所以目前的情况如Hibernate手册第9.1.3节所述 。 问题:如何扩展这样的结构的映射: A | +–B | | | D | +–C 我可以在hibernate映射中一个吗? 我需要什么 ?

如何使用带有Oracle 10g方言的Hibernate使用JPA生成我的id?

我有一些代码: @Id @SequenceGenerator(name = “SOMETHING_SEQ”) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “SOMETHING_SEQ”) @Column(name = “SOMETHING”, nullable = false) private Long id; hibernate如何提供我的身份? 我在我的数据库中看到一个名为’hibernate_sequence’的序列,没有其他hibernate’特殊表’。

Hibernate版本?

我正在使用JBoss Embedded版本beta3.SP10,我正面临一个应该在某些Hibernate版本中修复的持久性错误。 遗憾的是,我不知道在我的JBoss Embedded中使用了哪个版本的Hibernate,并且无法找到找到这些信息的方法,捆绑在其中的hibernate-all.jar不包含org.hibernate.Version类,也不是一个清醒。 如何在不使用org.hibernate.Version情况下找到当前加载的Hibernate版本?

如何调试“找到同一个集合的两个表示”?

我已经找到了几个 关于这个的问题 ,但没有一个问题的完整解释,以及如何调试它 – 答案都是轶事。 问题是在Play 1.2.4 JPA测试中,当我save()模型时,我得到了这个exception: org.hibernate.HibernateException:找到了两个相同集合的表示:models.Position.projects 我想知道: 是否有关于此问题的文档,与Play无关? 这个问题处于hibernate状态,但很多Google上的结果都在Play应用中。 有哪些基本的最佳做法可以避免这个问题? 它是由Play引起的吗? 或者我做错了什么? 如何解决我的具体情况? 这是github上问题的再现 。 我有四个实体: @Entity public class Person extends Model { public String name; @OneToMany(cascade = CascadeType.ALL) public List positions; } @Entity public class Position extends Model { public Position(){} public Position(Company companies) { this.companies = companies; this.projects = new […]

在HSQLDB 2.0.0-rc8中选择下一个序列值的“正确”方法

假设我有一个名为TEST_SEQ的序列,那么选择下一个值的正确方法是什么? 这不起作用: select next value for TEST_SEQ 可能是因为它需要一个“FROM”子句。 在hibernate中查看HSQLDialect.getSequenceNextValString()我看到了这个: “select next value for ” + sequenceName + ” from dual_” + sequenceName 在我的情况下会导致类似于: select next value for TEST_SEQ from dual_TEST_SEQ 哪个不适用于2.0.0-rc8(我只假设它适用于2.0之前的版本 – 尚未validation)我遇到了一个解决方案,涉及创建一个简单的表,其中包含一行称为DUAL,在这种情况下,这将起作用(甲骨文风格): select next value for TEST_SEQ from DUAL 但hsqldb没有开箱即用的这个表,我不知道如何在“第一次启动”时生成这样的表来进行hibernate。 我认为必须有一种方法来获得开箱即用的序列的下一个值,我只是错过它。 有任何想法吗 ?

如何使用Hibernate定义友谊关系?

我需要有“FriendRequest”和“ListOfFriends”function。类似于facebook,它显示收到的朋友请求的数量和已批准的朋友的数量。 通过“FriendRequest”,我的意思是拥有用户收到的朋友请求列表。 通过“ListOfFriends”,我的意思是拥有用户的朋友列表。 为了实现这一点,我定义了以下类,但是当我尝试使用其用户名检索用户时,将抛出“Stackoverflow”exception消息。 它似乎进入了一个无限循环。 当我从我的toString方法中删除“FriendRequests”和“Friends”时,它会停止抛出exception。 这个问题类似于我要实现的目标,但不同之处在于我不具备单独的Credential类。 会员 @Entity public class Member implements Serializable { @Id @GeneratedValue private long id; @Column(name = “username”, nullable = false, unique = true) private String username; @Column(nullable = false) private String fname; @Column(nullable = false) private String lname; @OneToMany(fetch = FetchType.EAGER, mappedBy = “requester”) private Set friendRequests = new […]

Hibernate mysql innodb

我想强迫hibernate使用innodb。 所以,我改变了“hibernate.dialect”以便拥有innodb,但我可以连接到mysql,但是当我做一些事务时,我有以下错误: org.springframework.transaction.TransactionSystemException:无法提交JPA事务; 嵌套exception是javax.persistence.RollbackException:org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:465)org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java)中标记为rol lbackOnly的事务: 709)在org.springframework.transaction.intercts.TransactionInterceptor的org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)的org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)的.invoke(TransactionInterceptor.java:116)org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)at $ Proxy46 .deleteAsset(未知来源) 这是我的persistence.xml: org.hibernate.ejb.HibernatePersistence <!– –> 你有什么主意吗 ?

hibernate中的PreInsert和PreUpdate事件监听器

我使用了PreInsertEventListener和PreInsertEventListener事件侦听器在表中插入创建日期和更新日期。 我面临的问题是,当我在数据库中保存实体时创建的日期无法插入表中,与更新记录时插入更新日期相同,它也不会插入更新日期。 我的代码示例如下所示: 听众课程: public class PreInsertListener implements PreInsertEventListener, PreUpdateEventListener { @Override public boolean onPreInsert(PreInsertEvent arg0) { City.class.cast(arg0.getEntity()).setCreated_date(new Date()); return false; } @Override public boolean onPreUpdate(PreUpdateEvent arg0) { System.out.println(“Update event……”); City.class.cast(arg0.getEntity()).setUpdated_date(new Date()); return false; } } Hibernate Connection类: public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { AnnotationConfiguration config = new […]

如何将数据库查询映射到Object ?

我有一个连接5个表的查询。 然后我用我需要的列值填充手工制作的对象。 这里有哪些解决方案可以解决使用特定工具的问题? 有这样的工具吗? 我只是开始学习Hibernate,所以我的问题是:Hibernate对这个问题是正确的决定吗? Hibernate将表映射到类。 所以,如果我有5个class而不是5个class,那没有区别。 将查询结果加入类中仍然很困难 可以使用hibernate将QUERY映射到我预先定义的结构(类)中,就像我们使用表映射一样吗? 或者甚至更好,是否可以将查询结果映射到有意义的字段[自动创建带字段的类],就像使用逆向工程一样? 我一直在考虑视图,但是……每次我们需要一个复杂的查询时都会创建一个新的视图..太冗长了。 正如S.Lott所问,这是一个问题的简单版本: 一般问题: 选择A.field_a,B.field_b,C.field_c from table_a内连接table_b B内连接table_c C. 哪里…… 每个表包含100个字段查询返回3个字段,但每个字段都属于唯一表 如何以OO风格解决该问题? 设计一个新对象,其属性对应于查询的返回值。 我想知道它是否是正确的[并且是唯一可能的]决定,是否有任何共同的解决方案。 另见我的评论。

两个相关JPA实体之间的接口

场景如下(显示的表格) Delivery table —— id channelId type 10 100 fax 20 200 email Fax table —- id number 100 1234567 101 1234598 Email table —– id email 200 a@a.com 201 b@b.com 基本上是交付和渠道实体之间的一对一关系,但由于每个具体渠道(传真,电子邮件)都有不同的成员,我想在两个实体之间创建一个通用接口(通道),并将其用于@OneToOne关系。 在我看来这是一个简单的场景,你们很多人可能已经经历过,但我无法成功。 我试过把那个targetEntity的东西但没有用。 仍然说“交付引用一个未知的实体” 有任何想法吗? 提前致谢