Tag: jpa

在使用JPA持久化时是否需要设置实体类的所有字段?

我试图插入一个有3列的表。这个表的主键是许多表的外键有很多一对多和多对多的关系。试图插入我设置所有这些列,但有一些其他设置我不使用的方法。 当我做em.persist到这个class级时,它会抛出nullpointerexception。 知道为什么会这样做吗? 我还必须设置其他class级成员吗? 实体类如下 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package objectRelationalMapping; import java.io.Serializable; import java.util.List; import javax.persistence.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author jai */ @Entity @Table(name = “entitymain”) @XmlRootElement @NamedQueries({ @NamedQuery(name = “Entitymain.findAll”, […]

为什么ormlite有自己的注释?

从我在ormlite中看到的,它已经实现了它的注释以及JPA标准注释。 首先,设计一组新注释的原因是什么? 其次,如何使用@Entity等标准注释代替ormlite特定注释。 现在,我没有为这些实体定义错误。 我需要一个jar文件吗?

如何有效地使用PreparedStatement?

我喜欢使用DAO模式,并且有一个类可以为特定的表和JPA实体执行所有SQL请求。 我有例如: public class MyDao { @PersistenceContext(name = “mycontext”) private EntityManager entityManager; public List find(String code) { return getEntityManager() .createQuery(“FROM MyEntity e WHERE e.code = :code”) .setParameter(“code”, code) .getResultList(); } } 但我也知道我们可以使用静态方法直接在实体类上使用命名查询(我不喜欢这种方式): @Entity @Table @NamedQueries({ @NamedQuery(name = “find”, query = “FROM MyEntity e WHERE e.code = :code”) }) public class MyEntity { … public static […]

JPA:没有@OneToMany注释的左连接

我的数据库中有一个OneToMany关系,但我不希望Hibernate直接管理它。 这种关系是翻译,但DTO代表自己是翻译的注册表: @Entity @Table(name = “my_table”) public class MyTable { @Id @Column(name = “id”, nullable = false, unique = true) private Integer id; @Transient private String lang; @Transient private String text; // getters and setters … } @Entity @Table(name = “my_table_translation”) public class MyTableTranslation { @Id @Column(name = “id”, nullable = false, unique = false) […]

如何从按距离排序的JPA实体获得结果?

我目前正在编写一个移动应用程序,用户必须从列表中选择一个位置。 使用来自Play应用程序的JPA将所有位置存储在Postgres数据库中。 我想要做的是在应用程序中获取用户位置,然后请求获取离该用户最近的前20或50个位置。 如果我使用自己的数据结构,我会使用KD-Tree。 但是,我对JPA / Play / PostgreSQL很新,所以我不确定如何手动处理数据持久性。 我能用现有的知识来思考的唯一事情就是查看每个位置并确定它的距离,但是在如此庞大的数据库中,这个速度会非常慢。 有没有一个查询我可以说“给我X的第一个结果按照这个纬度和经度的距离排序? 编辑:我正在使用Heroku,因为应用程序处于开发的早期阶段,如果你想在你的应用程序中使用PostGIS,我宁愿不必支付每天200美元的Heroku费用。

在OneToMany注释列表中重复

我正在使用JPA 2 + Hibernate 4.2.6开发一个Java项目,我得到了一个奇怪的行为。 在我的模型中,我有两个相关的参与者: Question和Answer @Entity public class Question { // … @OneToMany(mappedBy = “question”, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set answers; // … } @Entity public class Answer { // … @ManyToOne(optional = false) @JoinColumn(name = “question_id”, nullable = false) private Question question; // … } 这很有效:所有与某个Question相关的Answer都正确加载。 但现在我需要将answers收集器的Set从Set更改为List 。 我改变了类型并再次运行应用程序,现在我得到了几个重复的answers […]

如何配置eclipselink JTA序列连接池

我在MySQL上遇到了TABLE序列的并发问题,并发现该解决方案可能正在为序列生成配置一个单独的连接池。 在这个stackoverflow问题中,它指向Eclipselink文档 ,其中有一个示例为空的部分。 我似乎无法找到任何如何配置的示例。 我的persistence.xml目前在下面。 我应该更改什么以确保在单独的事务/连接池上执行序列生成。 知道我应该寻找什么来确定它的工作也很好,除了等待看死锁是否停止发生。 非常感谢 jdbc/myapp jdbc/myapp/nonjta false

使用@Transactional时,EntityManager.persist()不会插入数据

最近我将项目设置更改为使用Spring进行声明式事务处理。 或者至少我想。 当我调用persist ,不执行任何INSERT语句。 我为Spring ORM启用了TRACE日志级别,这就是我得到的: DEBUG JpaTransactionManager: Creating new transaction with name [albw.service.TransactionTestService.doServiceMethod]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ” DEBUG JpaTransactionManager: Opened new EntityManager [org.hibernate.ejb.EntityManagerImpl@28a7bd7a] for JPA transaction DEBUG BasicResourcePool: trace com.mchange.v2.resourcepool.BasicResourcePool@10ea443f [managed: 5, unused: 4, excluded: 0] (eg com.mchange.v2.c3p0.impl.NewPooledConnection@1ca37c6a) DEBUG JpaTransactionManager: Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@55d4ee7e] TRACE TransactionSynchronizationManager: Bound value [org.springframework.jdbc.datasource.ConnectionHolder@e75be38] for key [com.mchange.v2.c3p0.ComboPooledDataSource [ […]

Spring 3..0.5 + hierbnate 3.6.6.final + jboss as 7数据库访问

我正在将我们的项目从spring 2.5.6,hibernate 3.3.2,jboss 4.2升级到Spring 3..0.5 + hierbnate 3.6.6.final + jboss as 7 。 那里有很多问题,我决定写一个简单的项目,并在jboss as7(使用Spring 3..0.5 + hierbnate 3.6.6.final)开始时将其删除。 该项目非常简单:DAO类将访问MYSQL数据库。 但是当它的entityManager尝试访问数据库时,应用程序失败,抛出“抛出exception:org.hibernate.MappingException:未知实体”。 以下是我的项目: 我的web控制器类: package com.yan.testing.web.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.yan.testing.jpa.dao.IYanDao; import com.yan.testing.jpa.entity.Yan; @Controller public class WebController { @Autowired IYanDao yanDao; @RequestMapping(“sayHello.do”) public String SayHello(){ Yan yan = yanDao.findById(1L); System.out.println(yan.getName()); return “sayHello”; } […]

org.hibernate.MappingException:未知实体:在spring orm中

我得到以下exception org.hibernate.MappingException:未知实体:com.sample.Student 我在Stackoverflow上看到了很多相同问题的答案,但是他们都建议使用来自javax.persistence而不是hibernate的@Entity注释,在我的例子中我只使用它来自javax.persistence但仍然得到这个exception。 我的POJO课程 package com.sample; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table public class Student { @Id int id; public int getId() { return id; } public void setId(int id) { this.id = id; } String firstName; String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = […]