Tag: orm

JPA:如何具有相同实体types的一对多关系

有一个实体类“A”。 A类可能有同一types“A”的孩子。 另外“A”应该是它的父母,如果它是一个孩子。 这可能吗? 如果是的话我应该如何映射实体类中的关系? [“A”有一个id列。]

你如何使用NHibernate进行分页?

例如,我想在ASP.NET网页中填充gridview控件,只显示显示行数所需的数据。 NHibernate如何支持这个?

如何限制每个logging/组包含的关联?

我有一个模型,文章,其中有许多摘要。 我想载入最新的10篇文章,并且对于每篇文章,最多的点数都是摘要。 我的function如下所示: public function getArticles($category, $viewName) { $subArticles = $this->Articles->findByCategory($category)->contain([ 'Abstracts' => function ($q) { return $q ->select(['body', 'points', 'article_id']) ->where(['Abstracts.approved' => true]) ->limit(10) ->order(['Abstracts.points' => 'DESC']); } ]) ->limit(10) ->order(['Articles.created' => 'DESC']) ; $this->set( $viewName . 'Articles', $subArticles ); } 我得到的结果不是我想要的。 通过SQL查看,首先CakePHP获取类别(罚款)中的所有items.id。 然后,CakePHP使用刚刚发现的10个articles.id文件进入摘要表,并要求获得最高票数的10个摘要(属于这些文章)。 问题是,我想要1篇摘要,而不是属于该类别的任何文章的10摘要。 我该如何解决这个问题? 谢谢! 编辑 ndmbuild议这是在包含模型上使用limit()的重复,所以我试图在那里的解决scheme。 也就是说,我把这个添加到我的模型中: $this->hasOne('TopAbstract', [ 'className' => […]

JPA / Hibernate原生查询不识别参数

我正在使用Hibernate / JPA来执行原生的PostGIS查询。 这些查询的问题是他们需要的参数不是经典的X ='value'forms。 例如,以下行会崩溃 String queryString = "select * from Cell c where ST_DWithin(c.shape, SetSRID(ST_GeomFromEWKT('POINT(:lon :lat)'),4326), 0.1)"; Query query = Cell.em().createNativeQuery(queryString, Cell.class); query.setParameter("lon", longitude); query.setParameter("lat", latitude); play.exceptions.JavaExecutionException: org.hibernate.QueryParameterException: could not locate named parameter [lon] at play.mvc.ActionInvoker.invoke(ActionInvoker.java:259) at Invocation.HTTP Request(Play!) Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [lon] at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:358) 以下查询适用于: String […]

Hibernate中的persist()和merge()有什么区别?

Hibernate中的persist()和merge()有什么区别? persist()可以创build一个UPDATE&INSERT查询,例如: SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); 在这种情况下查询将会像这样产生: Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? 所以persist()方法可以生成一个Insert和一个Update。 现在用merge() : SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano Pavarotti"); session.merge(singer); session.flush(); 这是我在数据库中看到的: SINGER_ID […]

LINQ To Entities不识别方法Last。 真?

在这个查询中: public static IEnumerable<IServerOnlineCharacter> GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderBy(p => p.ServerStatus.ServerDateTime) .GroupBy(p => p.RawName) .Select(p => p.Last()); } 我不得不把它切换到这个工作 public static IEnumerable<IServerOnlineCharacter> GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderByDescending(p => p.ServerStatus.ServerDateTime) .GroupBy(p => p.RawName) .Select(p => p.FirstOrDefault()); } 我甚至无法使用p.First()来镜像第一个查询。 为什么在这种强大的ORM系统中存在这样的基本限制?

绕过Hibernate中的GeneratedValue(合并数据不在数据库?)

我的问题与[1]或[2]中描述的相同。 我需要手动设置一个默认的自动生成的值( 为什么?导入旧数据 )。 正如在[1]中所描述的,使用Hibernate的entity = em.merge(entity)将会做到这一点。 对我来说不幸的是, 我既没有错误,也没有任何其他的警告。 该实体不会出现在数据库中 。 我正在使用Spring和Hibernate EntityManager 3.5.3-Final。 有任何想法吗?

如何用JPA批注注释MYSQL自动增量字段

直接点,问题是保存对象运营商到MySQL数据库。 在保存之前,我尝试从这个表中select,它的工作原理,连接到数据库也是如此。 这是我的操作对象: @Entity public class Operator{ @Id @GeneratedValue private Long id; private String username; private String password; private Integer active; //Getters and setters… } 为了保存我使用JPA EntityManager的persist方法。 这里是一些日志: Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?) com.mysql.jdbc.JDBC4PreparedStatement@15724a0: insert into Operator (active,password, username, id) values (0, 'pass', 'user', ** NOT SPECIFIED […]

entity framework6.0下的ORM实体与域实体

我偶然发现了以下两篇文章的第一个和第二个 ,其中作者总结说ORM实体和领域实体不应混为一谈。 目前我正面临着这个问题,因为我使用Code First方法对EF 6.0进行编码。 我使用POCO类作为EF中的实体以及我的域/业务对象。 但是我发现自己经常处于这样一种情况:我只是因为EF框架强迫我这样做,才将一个属性定义为公共或导航属性。 这两篇文章的底线我不知道该怎么办? 我真的应该创build一个实例框架的CustomerEF类和我的域的CustomerD? 然后创build一个存储库,使用CustomerD映射到CustomerEF做一些查询,然后将接收到的CustomerEF映射回到CustomerD。 我以为EF是关于将我的域实体映射到数据的。 所以请给我一些build议。 我忽略了EF能够提供给我的一个重要的东西吗? 或者这是一个EF不能完全解决的问题? 在后一种情况下,解决这个问题的好方法是什么?

JPQL在select语句中创build新对象 – 避免还是拥抱?

我最近了解到,可以在JPQL语句中创build新的对象,如下所示: select new Family(mother, mate, offspr) from DomesticCat as mother join mother.mate as mate left join mother.kittens as offspr 这是要避免还是要拥抱? 根据良好的做法,何时使用这个function是合理的?