Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的HQL查询渴望加载惰性关联?_Java_Sql Server_Hibernate_Hql - Fatal编程技术网

Java 为什么我的HQL查询渴望加载惰性关联?

Java 为什么我的HQL查询渴望加载惰性关联?,java,sql-server,hibernate,hql,Java,Sql Server,Hibernate,Hql,我试图提高HQL查询的性能,但我被难倒了。我在调节器、ZipCode和EagleUsers对象上的OneTONE关联都标记为FetchType.LAZY,但当我使用此查询时,它们会立即从数据库中提取 session.createQuery( "FROM Adjuster a, ZipCode z, EagleUsers e WHERE a.eagleUsersByUserId = e.userId AND a.adjusterContact.zipCode = z.zip

我试图提高HQL查询的性能,但我被难倒了。我在调节器、ZipCode和EagleUsers对象上的OneTONE关联都标记为FetchType.LAZY,但当我使用此查询时,它们会立即从数据库中提取

session.createQuery(
            "FROM Adjuster a, ZipCode z, EagleUsers e WHERE a.eagleUsersByUserId = e.userId AND a.adjusterContact.zipCode = z.zip AND a.active = true AND a.isRecordDeleted = false"
            ).setMaxResults(1).list();
它为什么这样做

SQL输出:

Hibernate: select top 1 adjuster0_.AdjusterId as Adjuster1_2_0_, zipcode1_.ZipId as ZipId1_163_1_, eagleusers2_.UserId as UserId1_91_2_, adjuster0_.Active as Active2_2_0_, adjuster0_.AutoAssign as AutoAssi3_2_0_, adjuster0_.SupervisorId as Supervis6_2_0_, adjuster0_.UserId as UserId7_2_0_, adjuster0_.IsRecordDeleted as IsRecord4_2_0_, adjuster0_.IsW2 as IsW5_2_0_, zipcode1_.Areacode as Areacode2_163_1_, zipcode1_.City as City3_163_1_, zipcode1_.County as County4_163_1_, zipcode1_.DST as DST5_163_1_, zipcode1_.Latitude as Latitude6_163_1_, zipcode1_.Longitude as Longitud7_163_1_, zipcode1_.State as State8_163_1_, zipcode1_.Timezone as Timezone9_163_1_, zipcode1_.TimezoneOffset as Timezon10_163_1_, zipcode1_.Zip as Zip11_163_1_, eagleusers2_.FirstName as FirstNam2_91_2_, eagleusers2_.IsRecordDeleted as IsRecord3_91_2_, eagleusers2_.LastName as LastName4_91_2_, eagleusers2_.SubRoleId as SubRoleI5_91_2_ from eagle_prd.dbo.Adjuster adjuster0_ cross join eagle_prd.dbo.ZipCode zipcode1_ cross join eagle_prd.dbo.EagleUsers eagleusers2_ cross join eagle_prd.dbo.AdjusterContact adjusterco3_ where adjuster0_.AdjusterId=adjusterco3_.AdjusterId and adjuster0_.UserId=eagleusers2_.UserId and adjusterco3_.ZipCode=zipcode1_.Zip and adjuster0_.Active=1 and adjuster0_.IsRecordDeleted=0
Hibernate: select adjusterau0_.AdjusterId as Adjuster1_3_0_, adjusterau0_.CurrentWorkZipCode as CurrentW2_3_0_, adjusterau0_.ExcludeHomeZip as ExcludeH3_3_0_, adjusterau0_.HomeZipCode1 as HomeZipC4_3_0_, adjusterau0_.HomeZipCode2 as HomeZipC5_3_0_, adjusterau0_.IsRecordDeleted as IsRecord6_3_0_, adjusterau0_.MaxOneDayClaims as MaxOneDa7_3_0_, adjusterau0_.MaxOneWeekClaims as MaxOneWe8_3_0_, adjusterau0_.MaxTwoDayClaims as MaxTwoDa9_3_0_, adjusterau0_.VacationEnd as Vacatio10_3_0_, adjusterau0_.VacationStart as Vacatio11_3_0_, adjusterau0_.WebAssignments as WebAssi12_3_0_ from eagle_prd.dbo.AdjusterAutoAssign adjusterau0_ where adjusterau0_.AdjusterId=?
Hibernate: select adjusterco0_.AdjusterId as Adjuster1_7_0_, adjusterco0_.CarAllowance as CarAllow2_7_0_, adjusterco0_.IsRecordDeleted as IsRecord3_7_0_, adjusterco0_.PhoneAllowance as PhoneAll4_7_0_, adjusterco0_.PhotoPercentage as PhotoPer5_7_0_, adjusterco0_.SeviceFeePercentage as SeviceFe6_7_0_ from eagle_prd.dbo.AdjusterCompensation adjusterco0_ where adjusterco0_.AdjusterId=?
Hibernate: select adjusterco0_.AdjusterId as Adjuster1_8_0_, adjusterco0_.City as City2_8_0_, adjusterco0_.Fax as Fax3_8_0_, adjusterco0_.IsRecordDeleted as IsRecord4_8_0_, adjusterco0_.Mobile as Mobile5_8_0_, adjusterco0_.Phone as Phone6_8_0_, adjusterco0_.PhoneExt as PhoneExt7_8_0_, adjusterco0_.State as State8_8_0_, adjusterco0_.Street1 as Street9_8_0_, adjusterco0_.Street2 as Street10_8_0_, adjusterco0_.ZipCode as ZipCode11_8_0_ from eagle_prd.dbo.AdjusterContact adjusterco0_ where adjusterco0_.AdjusterId=?
Hibernate: select aspnetuser0_.UserId as UserId1_171_0_, aspnetuser0_.ApplicationId as Applicat7_171_0_, aspnetuser0_.IsAnonymous as IsAnonym2_171_0_, aspnetuser0_.LastActivityDate as LastActi3_171_0_, aspnetuser0_.LoweredUserName as LoweredU4_171_0_, aspnetuser0_.MobileAlias as MobileAl5_171_0_, aspnetuser0_.UserName as UserName6_171_0_ from eagle_prd.dbo.aspnet_Users aspnetuser0_ where aspnetuser0_.UserId=?
Hibernate: select aspnetmemb0_.UserId as UserId1_167_0_, aspnetmemb0_.ApplicationId as Applica21_167_0_, aspnetmemb0_.Comment as Comment2_167_0_, aspnetmemb0_.CreateDate as CreateDa3_167_0_, aspnetmemb0_.Email as Email4_167_0_, aspnetmemb0_.FailedPasswordAnswerAttemptCount as FailedPa5_167_0_, aspnetmemb0_.FailedPasswordAnswerAttemptWindowStart as FailedPa6_167_0_, aspnetmemb0_.FailedPasswordAttemptCount as FailedPa7_167_0_, aspnetmemb0_.FailedPasswordAttemptWindowStart as FailedPa8_167_0_, aspnetmemb0_.IsApproved as IsApprov9_167_0_, aspnetmemb0_.IsLockedOut as IsLocke10_167_0_, aspnetmemb0_.LastLockoutDate as LastLoc11_167_0_, aspnetmemb0_.LastLoginDate as LastLog12_167_0_, aspnetmemb0_.LastPasswordChangedDate as LastPas13_167_0_, aspnetmemb0_.LoweredEmail as Lowered14_167_0_, aspnetmemb0_.MobilePIN as MobileP15_167_0_, aspnetmemb0_.Password as Passwor16_167_0_, aspnetmemb0_.PasswordAnswer as Passwor17_167_0_, aspnetmemb0_.PasswordFormat as Passwor18_167_0_, aspnetmemb0_.PasswordQuestion as Passwor19_167_0_, aspnetmemb0_.PasswordSalt as Passwor20_167_0_ from eagle_prd.dbo.aspnet_Membership aspnetmemb0_ where aspnetmemb0_.UserId=?
Hibernate: select aspnetprof0_.UserId as UserId1_168_0_, aspnetprof0_.LastUpdatedDate as LastUpda2_168_0_, aspnetprof0_.PropertyNames as Property3_168_0_, aspnetprof0_.PropertyValuesBinary as Property4_168_0_, aspnetprof0_.PropertyValuesString as Property5_168_0_ from eagle_prd.dbo.aspnet_Profile aspnetprof0_ where aspnetprof0_.UserId=?
Hibernate: select eagleuseri0_.UserId as UserId1_90_0_, eagleuseri0_.MobilePhone as MobilePh2_90_0_, eagleuseri0_.OfficePhone as OfficePh3_90_0_ from eagle_prd.dbo.EagleUserInfo eagleuseri0_ where eagleuseri0_.UserId=?

hibernate Query.list()函数在创建与hibernate作用域分离的列表时获取完整对象,包括其引用。

hibernate Query.list()函数获取完整对象,在创建与hibernate作用域分离的列表时包含其引用。

hibernate如何知道需要查询的调整器、ZipCode和EagleUsers?你能发布querylog并指出你认为不合逻辑的地方吗?@MartijnBurger我希望它能抓取调节器、ZipCode和EagleUsers——我不希望它做的是抓取这些对象的每个子对象,也不希望它抓取子对象的每个子对象等等。我猜是list()方法在做这件事。当你把它关掉时会发生什么。顺便说一句:list()方法不是查询接口的一部分,它来自哪里?这是一种特定于hibernate的方法:否则hibernate如何知道需要查询什么调节器、ZipCode和EagleUsers?你能发布querylog并指出你认为不合逻辑的地方吗?@MartijnBurger我希望它能抓取调节器、ZipCode和EagleUsers——我不希望它做的是抓取这些对象的每个子对象,也不希望它抓取子对象的每个子对象等等。我猜是list()方法在做这件事。当你把它关掉时会发生什么。顺便说一句:list()方法不是查询接口的一部分,它来自哪里?这是一种特定于hibernate的方法:那么如何在不拉下整个对象图的情况下查询数据库呢?这是一个完全不同的问题那么,如何在不拉下整个对象图的情况下查询数据库呢?这是一个完全不同的问题。:)