Tag: 持久化

这是正确的(更好的)对象关系映射吗?

我真的很难在我的项目中使用Hibernate。 我在这里描述的一些问题: Hibernate:得到太多行我开始想知道我的代码是否正确。 我正在开发一个庞大的项目,我不得不自己定义带注释的映射类。 但是当问题开始出现时,我决定重新创建与项目分开的数据库部分,并尝试在IDE中生成实体。 我有两个表: My和Option 。 My有主键:列qwerty和property 。 Property是Option表中的外键。 当然, Option将property作为主键。 在我的解决方案中,我创建了具有两个属性的@Embeddable MyPK类: String qwerty和String property 。 在我的My实体中,我当然有@EmbeddedId MyPK和property (与MyPK中的列名相同),但这是Option对象,而不是MyPK中的MyPK 。 @ManyToOne @JoinColumn(name = “property”, nullable = false, insertable = false, updatable = false) protected Option option; 这是由Intellij Idea中的Hibernate Tools生成的实体。 没有EmbeddedId ,但有@IdClass 。 我认为@IdClass仅适用于基本类型。 但我有一个对象作为我的主键的一部分。 但是这里也有OptionEntity对象。 保持一列的基本类型和对象类型是否正确? @javax.persistence.IdClass(test.go.MyEntityPK.class) @javax.persistence.Table(name = “MY”, schema = […]

支持实体 – 属性 – 值模型的Java框架

我有兴趣开发一个与EAV模型一起使用的基于门户的应用程序,并想知道是否有任何Java框架可以帮助这种类型的开发? salesforce.com使用EAV,目前有20个表。 我寻求的框架应该允许它可配置为不同的EAV实现

使用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 […]

为什么要使用实体经理?

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

将JPA与Hibernate实现一起使用:entityManager.remove – 不工作

我使用JPA而不是Hibernate 4.1.4.Final实现。 我的问题是我无法让EntityManager#remove()工作。 所有其他:更新,插入,选择操作正常工作,除了这一个。 我的persistence.xml文件: org.hibernate.ejb.HibernatePersistence core.entity.Answer core.entity.BaseEntity true NONE 我的Answer实体:( BaseEntity类只保存主键 – ID) @Entity @Table(name = “ANSWER”) @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Answer extends BaseEntity { @Column(name = “ANSWER_VALUE”) private String answerValue; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = “QUESTION_ID”, nullable = false) private Question question; //overrided equals, hascode, toString // all getters and setters } […]

为什么我们需要在元素中指定类?

我的persistence.xml有2个持久性单元。 它们每个都有几个元素。 我认为我们必须指定与某些持久性单元相关的所有类。 但我不小心忘了为新实体指定class-element,但程序工作正常,即使没有它。 然后我删除了所有类元素,一切正常。 那么,为什么我们需要呢? 示例代码: chartdemo.model.domain.Category

JPA还是Hibernate for Java Persistence?

我正在研究Java,.NET和Groovy中的企业应用程序的开发。 对于每个平台,我们将尝试实现简单的SOAP Web服务是多么困难。 我们将使用最常用的工具和库,尽可能准确地研究现实世界。 在这方面,当使用Hibernate进行持久化时,它会更好地反映真实世界使用新的JPA(Java Persistence API),还是JPA出现之前存在的Hibernate自定义API?

Java维护持久的TCP连接

我试图使用TCP从服务器向客户端发送多个数据。 我想为整个会话只创建一个TCP连接。 我该怎么做呢? 我尝试了以下流程的代码,但程序在收到第一个响应后停止。 客户端 1.create sockets and streams 2.send request for first data 3.wait for response from server 4.send next request <———– server doesn't seem to handle this request 5.get next response from server 服务器端 1.Create server socket and wait for incoming connections 2.Parse incoming request 3.Send response 4.Parse next request 5.Send next response […]

两个类内部几乎重复的代码

这时,我有两个类: UserHibernateDao和TicketHibernateDao : import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import model.dao.Dao; import model.entity.User; public class UserDaoHibernate extends HibernateDaoSupport implements Dao { public User get(long id) { return getHibernateTemplate().get(User.class, id); } public void save(User user) { getHibernateTemplate().save(user); } public void remove(long id) { getHibernateTemplate().delete( getHibernateTemplate().get(User.class, id)); } } 第二个: import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import model.dao.Dao; import model.entity.Ticket; public […]

使用hibernate Criteria更新多行

我正在尝试运行更新查询,在sql中看起来像这样: update studentMaster set sess_status = ‘G’ where ACADEM_YEAR = COURSE_YEAR; 我试图使用Criteria重新创建查询,如下所示: public void updateSessionStatus() { Session sess = factory.openSession(); Transaction tx = null; try { tx = sess.beginTransaction(); Criteria crit = sess.createCriteria(CollegeStudentsMaster.class); crit.add(Restrictions.eqProperty(“academicYear”, “courseYears”)); CollegeStudentsMaster e = (CollegeStudentsMaster) crit.uniqueResult(); e.setSessionStatus(“G”); sess.saveOrUpdate(e); tx.commit(); } catch (HibernateException asd) { if (tx != null) { tx.rollback(); } […]