小编Dav*_*vid的帖子

使用join进行Hibernate自定义SQL查询 - 避免返回数组列表

我在Hibernate(3.5.2)中有一个自定义SQL查询,我想在其中返回一个映射对象和一个关联(加入)对象.但是,Hibernate似乎给了我一个数组列表而不是一个对象列表.

为了简化我的情况:

Entity1包含Entity2的外键,并且已设置映射对象,以便Entity1具有引用Entity2的对象属性.我想检索Entity1对象的列表,但是已经初始化了关联的对象引用(以便加载关联的对象).

现在,我可以使用这样的自定义SQL查询来执行此操作:

final SQLQuery qry = hibernateSession.createSQLQuery(
    "select {entity1.*}, {entity2.*} from entity1 inner join entity2 on entity1.fk = entity2.id ");

qry.setReadOnly(true);
qry.addEntity("entity1", Entity1.class);
qry.addJoin("entity2", "entity1.entity2");

List list = qry.list();  // Returns list of arrays!!
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为所有Entity1对象都已正确初始化.但是,我得到的列表不是Entity1对象的简单列表.它实际上是一个数组列表,其中每个数组包含2个元素 - Entity1和Entity2.我假设这是因为我在SELECT子句中放了两个别名条目.

如果我删除第二个别名(对于Entity2),我只是得到"未找到列"错误 - 可能是因为Hibernate无法找到初始化entity2的字段.

有任何想法吗?我有一个查询可以返回主对象和关联对象的字段,但我希望返回的List只是Entity1对象的列表.

先发制人评论:是的,我知道我可能会重新构建这个并以不同的方式进行查询(标准API等).但这就是我现在所困扰的.在这种特殊情况下,我受到其他一些因素的限制,所以希望只是某种方式告诉Hibernate我想要什么!

谢谢.

hibernate

12
推荐指数
1
解决办法
2万
查看次数

Spring 3 MVC - 如何将表单转换为查询字符串?

我有一个简单的Spring表单,它绑定到post上的表单对象.http POST处理程序可以完成一些工作,然后需要重定向到新的URL,将表单数据作为查询字符串参数传递.

所以,假设我有一个带有属性"param1"和"param2"的表单支持对象,我想构建一个看起来像这样的字符串:

redirect:/app/new/page?param1=value;param2=value

现在,Spring会自动将值从查询字符串或表单帖子绑定到我的表单对象中,但是我想生成一个查询字符串,其中的值取自表单对象.

显然,手动执行此操作是微不足道的,但由于我将拥有许多不同的表单支持对象,因此Spring中是否有一些内置工具可以从表单对象生成查询字符串,适合构建到URL中?

谢谢.

java spring-mvc

6
推荐指数
1
解决办法
3286
查看次数

使用PL/SQL查看从Oracle函数返回的SYS.XMLTYPE

我有一个Oracle函数,它动态创建一个XML文档,并以SYS.XMLTYPE值返回它.

我想从SQL Developer运行一个调用该函数并打印文档的查询(通过select或dbms_output - 我不在乎).

但是所有的示例/文档似乎都是指在表中查询XML列,而我似乎无法获得适合我特定用法的语法.我想要这样的事情:

declare
   x SYS.XMLTYPE;
begin
   x := my_package.my_function();
   select x.getclobval() from x;  -- doesn't work!
end;
Run Code Online (Sandbox Code Playgroud)

如何在上面的代码中打印出XML类型变量'x'的值?

xml oracle plsql

5
推荐指数
2
解决办法
2万
查看次数

HIbernate 3.5.1 - 我可以直接放入 EHCache 2.0.1 吗?

我使用的是 Hibernate 3.5.1,它捆绑了 EHCache 1.5。

如果我想使用最新的 EHCache 版本 (2.0.1),是否只需从我的项目中删除 ehcache-1.5.jar 并替换为 ehcache-core-2.0.1.jar 即可?有什么需要注意的问题吗?

另外 - Hibernate 映射文件中的缓存“区域”是否与 ehcache 配置 xml 中的缓存“名称”相同?我想要做的是定义 2 个命名缓存区域 - 一个用于不会更改的只读引用实体(查找列表等),另一个用于所有其他实体。所以在ehcache中我想定义两个元素;

<cache name="readonly"> ... </cache>
<cache name="mutable"> ... </cache>
Run Code Online (Sandbox Code Playgroud)

然后在我的 Hibernate 映射文件中,我将指定每个实体要使用的缓存:

<hibernate-mapping>
    <class name="lookuplist">
        <cache region="readonly" usage="read-only"/>
        <property> ... </property>
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

那行得通吗?一些文档似乎暗示为每个映射类创建一个单独的区域/缓存......

谢谢。

java orm hibernate ehcache

5
推荐指数
1
解决办法
870
查看次数

ScenicView 8.6.0没有找到JavaFX应用程序

目前使用JDK 1.8更新92(32位).为什么在从jar启动时,ScenicView无法找到我的JavaFX应用程序,或者作为-javaagent:参数?

如果我启动我的JavaFX应用程序,然后从jar文件启动ScenicView,它只是坐在那里试图找到要连接的东西.我在命令行上设置了-debug选项,我得到的是: -

Platform running
Launching ScenicView v8.0.0
Startup done
Creating server
Server done
Number of running Java applications found: 0
0 JavaFX applications found
Run Code Online (Sandbox Code Playgroud)

我已经尝试将ScenicView作为IntelliJ的"外部工具"(指定了正确的JVM),并且仅从命令行启动.结果相同.

-javaagent方法似乎也不起作用.如果我将jar作为-javaagent参数添加到我的应用程序中,根据文档,我只是在启动时遇到此错误:

Exception in thread "scenic-view-boot" java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
at javafx.application.Platform.runLater(Platform.java:83)
at org.scenicview.ScenicView.lambda$premain$34(ScenicView.java:122)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

启动它的唯一方法是将ScenicView jar添加到我的应用程序类路径中,并将启动嵌入到我的应用程序源中,如下所示

ScenicView.show(mainScene);
Run Code Online (Sandbox Code Playgroud)

在我需要的时候,它不像在独立工具中启动它那样方便.

这曾经很完美.我可以挖出一些较旧的JDK版本,看看它是否适用于早期的jvm(更新77表现出完全相同的问题),但与此同时,是否有一些方法可以获得更详细的注销,以便我可以尝试找到问题?

java javafx-8

5
推荐指数
1
解决办法
1717
查看次数

How to make Gradle fail the build if a file dependency is not found?

I have a Gradle build that has some dependencies of the form

compile files('path/to/local/lib.jar')
Run Code Online (Sandbox Code Playgroud)

(the build is being migrated - eventually these will be replaced)

The build failed because one of these paths was incorrectly specified. But it failed due to a compile error - it looked like Gradle silently ignored the missing dependency.

Is there a simple option or switch that will force Gradle to fail the build if any dependency (particularly local file dependencies) cannot be resolved (eg., …

java gradle

5
推荐指数
1
解决办法
3138
查看次数

WiX - 安装程序忽略我的“perUser”安装范围。为什么?

我正在尝试构建一个非常简单的安装程序,仅将软件包安装为“每用户”应用程序。没有对话框,只需始终安装到本地应用程序数据文件夹中。而且它不理我。并且始终安装到 C:\Program Files。

我已将 InstallScope 设置为“perUser”,但将安装目录保留为“ProgramFilesFolder”。该文档似乎表明应该重定向,但这并没有发生。

安装文件如下...

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*"
         Name="MyApplication"
         Language="1033"
         Version="1.0.0"
         Manufacturer="MyCompany"
         UpgradeCode="19E4E10A-558C-4D4A-BD2A-D6B8060FB917">

    <Package
            InstallerVersion="500"
            Compressed="yes"
            InstallPrivileges="limited"
            InstallScope="perUser" />

    <MajorUpgrade
            DowngradeErrorMessage="A newer version of MyApplication is already installed." />

    <MediaTemplate
            EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLDIR" Name="MyCompany MyApplication">
                <Directory Id="JreFolder" Name="jre"/>
                <Directory Id="LibFolder" Name="lib"/>
            </Directory>
        </Directory>
        <Directory Id="ProgramMenuFolder">
            <Directory Id="ApplicationProgramsFolder" Name="MyCompany MyApplication"/>
        </Directory>
    </Directory>

    <DirectoryRef Id="INSTALLDIR">
        <Component Id="CMP_MyApplication.exe">
            <File Id="FILE_MyApplication.exe" Source="MyApplication.exe" KeyPath="yes"/>
        </Component>
        <Component Id="CMP_MyApplication.ini">
            <File Id="FILE_MyApplication.l4j.ini" Source="MyApplication.l4j.ini" KeyPath="yes"/>
        </Component>
    </DirectoryRef> …
Run Code Online (Sandbox Code Playgroud)

wix

5
推荐指数
1
解决办法
1396
查看次数

Hibernate ORM 是否与 GraalVM 本机映像编译兼容?

根据文档,GraalVM 项目中的原生图像编译器对动态代理有一些限制。既然Hibernate大量使用了代理,那么在提前编译好的项目中能正常工作吗?

Quarkus项目似乎表明,它可以,但我的理解主要是一个基础上书签交易后

即使编译为 GraalVM 本机映像,Hibernate ORM 现在也可以工作 - 只需确保您使用 Quarkus 来构建应用程序。

如果我不想(或不能)使用 Quarkus 怎么办?是否可以使用使用 Hibernate 的 GraalVM(和 SubstrateVM)编译本机映像应用程序?

Quarkus 实际上做了什么来启用/支持 Hibernate?

java hibernate graalvm quarkus

4
推荐指数
1
解决办法
979
查看次数

标签 统计

java ×5

hibernate ×3

ehcache ×1

graalvm ×1

gradle ×1

javafx-8 ×1

oracle ×1

orm ×1

plsql ×1

quarkus ×1

spring-mvc ×1

wix ×1

xml ×1