Tag: hibernate

使用EAGER @ElementCollection对find()进行Hibernate LazyInitializationException

我收到org.hibernate.LazyInitializationException: illegal access to loading collection我的JPA代码中的org.hibernate.LazyInitializationException: illegal access to loading collection – 所有集合都是EAGER fetch – 当集合实体也有一个集合时。 有人可以帮我解决这个问题吗? 我已将我的JPA代码中的问题与以下@Entity定义隔离开来: (注意,我正在跳过包并导入语句以缩短代码。使用了一些Lombok注释,例如@Data表示该字段具有getter / setter,而@Cleanup用于执行通常的try / catch close()舞蹈) @Entity @Data public class MyEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; // @ElementCollection(fetch = FetchType.EAGER) // private Set tags = Sets.newTreeSet(); } @Entity @Data public class MyOtherEntity […]

引起:java.lang.ClassCastException:java.lang.Class无法强制转换为java.lang.reflect.ParameterizedType

我是Java Reflection的新手。 我检查了很多论坛,但我还没有找到合适的解决方案。 错误: Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 当我试图从db获取对象时: new Unit().getBy(3L); 方法声明 @MappedSuperclass public abstract class Generic { @Transient public Class entityClass; Generic() { entityClass = ((Class) ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0])); } @Id @GeneratedValue(strategy = GenerationType.TABLE) public Long id; public T getBy(Long id) { return JPA.em().find(entityClass, id); } 二级扩展 @MappedSuperclass public […]

为什么要使用实体经理?

我正在使用Hibernate将对象映射到实体,并且我已经开始使用实体管理器。 这可能是一个愚蠢的问题,但实际上是使用实体管理器的原因是什么? 以前我会使用HibernateSessionFactory来获取会话,然后使用该会话来提取/推送数据。

Hibernate和mysql的连接太多了

我完全失去了,我正在使用hibernate和mysql运行一个批处理作业,几个小时后我得到一个exception,说我正在使用许多连接。 我已经阅读了关于SO的所有文章,但似乎没有与我有关。 我正在使用Tapestry-hibernate,配置非常简单, http://tapestry.apache.org/using-tapestry-with-hibernate.html 。 不管我在哪里创建一个新的SessionFactory,一旦应用程序启动,我只是将hibernate Session注入我的类。 这是我当前与mysql的连接视图。 我的批处理作业是线程化的,每次新线程触发时,threads_connected似乎都会增加。 我的cfg.xml文件。 jdbc/company validate false filesystem /users/george/Documents/indexes true false org.hibernate.cache.ehcache.EhCacheRegionFactory 类中基本会话使用的示例 – “请注意下面的代码不是生产代码,仅用于说明会话使用情况。 private final Session session; public LineReaderParserImpl(Session session) { this.session = session; } public void parse() { exec.submit(new Runnable() { public void run() { for (int i = 0; i < 10000; i++) { Object […]

如何在hibernate中使用一对一映射执行插入

我已经成功地在两个实体之间创建了一对一的映射。 我能够从两个表中检索数据,但是我无法执行插入。 @Entity @Table(name=”users_test”) public class User { @Id @Column(name=”user_id”) @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String username; private String password; private int enabled; @OneToOne(cascade = CascadeType.ALL) @PrimaryKeyJoinColumn private UserRole userRole; //getters and setters } @Entity @Table(name = “user_roles”) public class UserRole { private int user_role_id; @Id @GeneratedValue(generator = “gen”) @Column(name = “user_id”, unique = true, […]

ClassCastException在Hibernate / Spring 4升级后,无法将Proxy36强制转换为SessionImplementor

编辑:我不是在问ClassCastException是什么 。 我问在Spring 4 / Hibernate 4的这个特定配置下DetachedCriteria中是什么导致它。 我正在尝试将一些遗留代码升级到Spring 4 / Hibernate 4,而且我已经碰壁了,因为Google并没有出现太多问题。 我试图在一个非常简单的Hibernate存储库上运行JUnit测试,但它失败了 java.lang.ClassCastException: com.sun.proxy.$Proxy36 cannot be cast to org.hibernate.engine.spi.SessionImplementor at org.hibernate.criterion.DetachedCriteria.getExecutableCriteria(DetachedCriteria.java:84) at com.my.app.rest.domain.repository.AbstractHibernateRepository$6.doInHibernate(AbstractHibernateRepository.java:163) … 这发生在Hibernate的org.hibernate.criterion.DetachedCriteria类中: /** * Get an executable instance of Criteria to actually run the query. * * @param session The session to associate the built Criteria with * * @return The […]

Hibernate中基本类型的ArrayList

我有一个关于整数的ArrayList或一般的原始类型的问题。 假设我正在设计一个POS程序,每个产品可能有几个价格。 假设我可以用int表示价格值,而在Product类中我有字段ArrayList prices 。 使用Hibernate进行映射的最佳方法是什么? 我可以将它映射到product_prices表,其中包含一个包含价格值的字段和一个引用相关产品的外键字段,但这似乎有点过分。 另一方面,我可以在String连接所有价格并将其存储在products表中的字段中,例如,用分号分隔价格。 这样我就可以保存一个表和一个未来的select ,但它似乎并不是OO。 这里最好做什么?

如何使用Hibernate动态创建数据库中的表?

我是hibernate的新手,我需要在飞行中创建数据库表。 这意味着我将从UI中获取用户的表格详细信息。 假设我们将用户对表属性(列)的数量限制为5左右。 我已经完成了关于hibernate的各种教程,我发现我们可以创建一个表但是为此我们需要事先安装一个类。 但就我而言,一切都将变得充满活力。 与JDBC相比,我们可以直接拍摄CREATE TABLE查询并将表参数传递给java代码中的查询。 我的Web应用程序使用REST Web服务,Spring 3框架和MySQL作为数据库。 任何教程链接或示例代码都非常有用 谢谢

更新(合并)时缺少Spring Data JPAvalidation

我正在使用Spring Data JPA的Spring boot 1.5.4.RELEASE开发项目。 问题是在更新实体时没有执行Hibernatevalidation器,或者至少在某些情况下它没有validation。 对于像下面这样的人 ,禁止使用空名称和技能集合必须具有最小1个元素和最大5个。在Spring Data存储库的调用保存期间,它们都被validation。 但是,对于已存在的实体的呼叫保存,它将仅validation名称的约束 – 并且不会检查技能。 @Entity public class Person { @Id @GeneratedValue private Long id; @NotBlank private String name; @ElementCollection(fetch = FetchType.EAGER) @Size(min = 1, max = 5) private Set skills = new HashSet(); protected Person() { } public Person(final String name, final Collection skills) { this.name = […]

未映射Enity

我正在尝试使用hibernate创建一个小项目,但我得到了错误“类型未映射[从类型o中选择o]”,我在hibernate.cfg.xml中添加了映射但仍然出错。 Type.java: package com.formation.gestionprojet.doa.entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name=”Type”) public class Type implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Id private Long id; private String name; private String description; private String active; public Type() { super(); // TODO Auto-generated constructor stub } public Long […]