我确信不同的ORM工具会以不同的方式来解决这个问题,但是对于映射这一概念,我并不真正关心具体的实现,因为我是一个通用的解决方案。如果没有特定的ORM框架就无法回答这个问题,那么就让我们使用Hibernate吧。
我理解映射的基本前提,但是我很好奇这些框架如何处理跨多个表的查询,比如当查询中出现JOIN时会发生什么。
SELECT f.fizz_name, b.buzz_foo
FROM fizz f
INNER JOIN buzz b
ON f.buzz_id = b.buzz_id
WHERE b.buzz_bar < 10
现在我们不能从地图上得到一个漂亮的,干净的,单一的POJO。
在服务器端代码中,为了获得更好的性能,我们通常不应该使用"select * from table“,而应该根据我在数据库性能指南文章中读到的(Select name,add from employee).This查询必要的列。
现在我有了hibernate的问题,我读到在hibernate中使用session.load(id)来检索基于主键的记录更好。这将检索与给定'id‘(表中的记录)的实体相关联的所有列。
现在,它并不与一般数据库性能指南相矛盾。hibernate原生sql查询和hibernate查询语言哪种性能更好?
当我试图调整代码以获得更好的性能时,请让我知道您的宝贵
我有一个视图,在这个视图中,我没有权限修改它,并且我必须执行一个SELECT查询,在列为空( empty,not null)的情况下查询其中的行。 在这个视图中,我有: Oid| Name | Email | Phone 此视图上的总记录超过980,000行。 这是我尝试过的: SELECT DISTINCT * FROM View WHERE Phone = ''
SELECT DISTINCT * FROM View WHERE datalength(Phone)<1
SELECT DISTINCT * FROM View WHERE Len(Phone
我正在使用PostgreSQL和JPA/Hibernate。我需要构建一个包含PostgreSQL regex比较运算符(name ~ 'pattern')的HQL查询。我有以下方言:
public class PostgreSQLExtendedDialect extends PostgreSQL95Dialect {
public PostgreSQLExtendedDialect() {
registerFunction("regexp_matches", new SQLFunctionTemplate(BooleanType.I
我正在尝试通过另一个查询的结果来缩小Hibernate条件查询的结果集。我知道如何使用JPQL解决这个问题:
FROM DocPackage p WHERE
EXISTS (SELECT g
FROM ObjectGroup g JOIN g.items i, Person per
WHERE g=p.applicantGroup
AND i.objectClass = 'org.cp.model.common.Person'
AND i.objectId=per.id
AND lower(concat(per.first
我有两种单向的多对一的关系。根据另一个类的条件使用投影查询一个类会生成额外的查询(n+1)。与Hibernate,投影查询如何避免n+1查询?
这是我的模型:
@Entity
public class Person {
@ManyToOne(targetEntity=PersonType.class, optional=false)
private PersonType personType;
@Id
@GeneratedValue
private Long id;
private String name;
/* other sup
Hibernate正在为特定条件查询生成无效SQL。我可以通过向WHERE子句中使用的值添加单引号来手动修复查询。
为了修复它,我将查询更改为:
where (role0_.ROLE_ID=2L )
至:
where (role0_.ROLE_ID=`2L` )
如何强制hibernate添加单引号(在mysql中是单引号,但在其他数据库系统中可能是其他),以将生成的SQL查询中使用的值括起来?
完整生成的查询是:
select permission1_.PERMISSION_ID as PERMISSION1_12_,
permission1_.IS_REQUIRED as IS2_
我在Grails & Groovy中工作,但这是一个hibernate问题。下面是我的Grails域类:
public Card {
// implicit Long id
String name
// ... and over a dozen other fields with various types.
}
我现在有一个Hibernate查询:
def name = "foo"
def result = session.createQuery("from Card as c where lower(c.name) like ?
为了在合理的时间内收集大量的重对象,避免内存溢出,我们实现了一个解决方案(我指的是具有多个fetchType.eager关系的对象,以及它们本身具有渴望获取关系的实体),首先选择这些对象的in,然后根据这些in选择对象本身。
到了优化代码的时候,我们注意到(使用hibernate.show_sql=true),我们用来收集这些对象(select a from A a where a.id in :ids)的查询被JPA/Hibernate转换为表单select a from ...endless join list... where a.id = ?的数千个查询。
问题如下:
为什么JPA/H
我有这样一个hibernate查询
SELECT t FROM User t JOIN UserRole u ON t.username = u.username WHERE t.username=:username AND t.password =:pass AND u.userRole =:ust
但是这个查询不能运行错误
错误:期望加入的路径!错误:期望加入的路径!期待加入的道路!在org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:385) at org.hiberna
我遇到了以下情况:
我有一个相当复杂的视图,我必须从中选择几个记录。
SELECT * FROM VW_Test INNER JOIN TBL_Test ON VW_Test.id = TBL_Test.id
WHERE VW_Test.id IN (1000,1001,1002,1003,1004,[etc])
这几乎是立即返回结果(当前在该in语句中有25个项目)。然而,当我使用下面的查询时,它会变得非常慢。
SELECT * FROM VW_Test INNER JOIN TBL_Test ON VW_Test.id = TBL_Test.id
WHERE VW_Test.id IN
我需要使用JPA来形成一个查询;
select PARENT.ID, PARENT.NAME, CHILD.ID, CHILD.STATUS FROM PARENT
LEFT OUTER JOIN CHILD ON PARENT.ID=CHILD.ID AND CHILD.STATUS in ('Active')
WHERE PARENT.ID=?
其中子表是与其父表的OneToMany关系。
使用JPA,我添加了下面的联接谓词
public static Specification<PARENT> hasChildrenWithStatus(List<
我试图将SQL的结果映射到表单父->子节点的对象结构,其中SQL查询的一个条件将结果限制为一个父对象。结果集包含n行,因为有n个子行,但当然每一行只属于单亲。
我使用Hibernate,并在我的“父”实体上放置了一个@Subselect,这包含了我的整个左联接查询。
@Subselect("SELECT x.*, y.* FROM x INNER JOIN y on x.a = y.a WHERE x.a = 1")
public class X {
... X attributes
private List<Y>;
}
public class
我在JPA/Hibernate上遇到了一个奇怪的问题,我希望我能得到一些帮助。我的环境:
OpenJDK 11.0.2弹簧引导2.2.2
Spring starter(以上Spring版本的默认版本)
冬眠5.4.9
Maria DB 2.3.0
Windows 10
我使用两个实体:
@Entity
@Table(name = "\"accUser\"")
public class User implements Serializable {
private static final long serialVersion