HQL加入查询以急切获取大量关系

我的项目最近发现Hibernate可以采用多级关系,并且在单个连接HQL中急切地获取它们以生成我们需要的填充对象。 我们喜欢这个function,认为它会胜过懒惰的获取环境。 问题是,我们遇到的情况是,单个父母有十几个直接关系,一些子关系,其中一些在几个实例中有几十行。 结果是一个非常大的交叉产品,导致hql几乎永远地旋转它的轮子。 在我们放弃并杀死它之前,我们将记录变为11并且看到了超过100000次迭代。 很明显,虽然这种技术在某些情况下很有用,但它具有生活中的一切限制。 但是hibernate中最好的替代方案是什么呢? 我们不想懒惰加载这些,因为我们将进入更加糟糕的N + 1情况。 理想情况下,我希望让Hibernate预取所有的行和细节,但一次只做一个关系,然后将正确的细节对象保湿到正确的父对象,但我不知道它是否做了这样的事情。 建议? 更新: 所以我们得到了SQL这个查询生成的,事实certificate我错误地诊断了这个问题。 交叉产品并不是那么大。 我们直接在数据库中运行相同的查询,并在一秒钟内返回500行。 然而我们在hibernate日志中非常清楚地看到它进行了100K迭代。 是否有可能Hibernate会陷入你的人际关系或某事的循环中? 或者这应该被问为一个新问题?

JApplet创建了一个在Java中反弹并逐渐降低的球

public class Circle extends JApplet { public void paint(Graphics g) { int x=100; int y=100; int diameter=50; int xResize=500; int yResize=500; super.paint(g); resize(xResize,yResize); g.drawOval(x, y, diameter, diameter); } } 所以我试图创造一个上下反弹并逐渐变小的球。 我需要使用以下代码作为一个类来设置我将实际执行操作的下一个类。 我知道我需要将当前的代码设置为构造函数,实例变量和创建对象的方法,但我似乎无法弄清楚如何做到这一点。 另外,我如何使绘制的图像在JApplet上上下移动?

Date.toString()显示什么时区?

默认情况下, java.util.Date.toString()方法显示的时区是什么? 由于Java Date以UTC Date.toString()存储给定日期且不包含任何显式时区, Date.toString()只显示主机的默认时区,或TimeZone.getDefault() ?

Quartz Java恢复工作多次使用它

对于我的应用程序,我创建作业并使用CronTriggers安排它们。 每个作业只有一个触发器,作业名称和触发器名称都相同。 没有工作共享触发器。 现在当我创建像这样的“0/1 * * * *?”的cron触发器时 它指示作业每秒执行一次,它运行得很好。 当我第一次暂停工作时,问题就出现了: scheduler.pauseJob(jobName, jobGroup); 然后让我们说50秒后恢复工作: scheduler.resumeJob(jobName, jobGroup); 我所看到的是,在这50秒内,作业没有按要求执行。 但是当我恢复工作的那一刻,我同时看到了50份执行工作! 我认为这是由于失火指令的默认设置,但即使在创建时将触发器的失火指示设置为: trigger.setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING); 同样的事情发生了。 任何人都可以建议一种解决方法吗?

如何使用键绑定在屏幕上移动矩形?

我正在尝试创建的游戏是蛇,到目前为止我已经想出如何使用paint(Graphics g)一点JPanel ,鼠标监听器,现在我正在尝试创建一个将在屏幕上移动的矩形使用键绑定或键侦听器,但我不知道我应该怎么做。 这是我的代码到目前为止,它有2个部分。 第一部分叫做snake2因为如果我不知道自己在做什么,我会用不同的东西制作相同的程序。 Snake使用框架,但Snake2使用JPanel (看起来更好……) import java.awt.*; //required for MouseListener import java.awt.event.*; //requied for Graohics import java.applet.*; import javax.swing.*; public class Snake2 extends JPanel { private Rectangle sampleObject; public Snake2() { addMouseListener(new MouseListener()); } /* create background */ public void paint (Graphics g) { Font angel = new Font(“Angelic War”, Font.BOLD, 60); Font […]

Java Sound API – 捕获麦克风

我已经阅读了Sound API for Java几天了,我无法理解它。 我是一个不错的程序员,我只是很难理解API。 我一直试图从麦克风中捕获音频并实时显示波形图。 我在捕获音频方面遇到了麻烦,他们在教程中说这样做,但我似乎无法让它工作。 任何建议和帮助将不胜感激,逐行回答将是理想的。 谢谢,麻烦您了。 import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.TargetDataLine; public class FindLine { public static void main (String[] args){ AudioFormat format = new AudioFormat(22000,16,2,true,true); TargetDataLine line; DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); // format is an AudioFormat object if (!AudioSystem.isLineSupported(info)) { // Handle the error […]

发生错误时使用JAX-WS跟踪XML请求/响应

如果有任何错误,我想记录原始肥皂邮件请求,我正在使用JAX-WS。 任何帮助将不胜感激。 只有在响应中发生exception时,是否有一种简单的方法(也就是说:不使用代理)来访问使用JAX-WS参考实现(JDK 1.5中包含的那个)更好地发布的Web服务的原始请求/响应XML? 我想记录原始的SOAP reuest,以便我可以在以后的任何webservice客户端测试它

使用JPA Criteria API进行分页的总行数

我正在为我的系统中的实体实现“高级搜索”类function,以便用户可以使用此实体的属性上的多个条件(eq,ne,gt,lt等)搜索该实体。 我正在使用JPA的Criteria API动态生成Criteria查询,然后使用setFirstResult()和setMaxResults()来支持分页。 一切都很好,直到这一点,但现在我想显示结果网格上的结果总数,但我没有看到直接的方式来获得Criteria查询的总计数。 这就是我的代码的样子: CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery cQuery = builder.createQuery(Brand.class); Root from = cQuery.from(Brand.class); CriteriaQuery select = cQuery.select(from); . . //Created many predicates and added to **Predicate[] pArray** . . select.where(pArray); // Added orderBy clause TypedQuery typedQuery = em.createQuery(select); typedQuery.setFirstResult(startIndex); typedQuery.setMaxResults(pageSize); List resultList = typedQuery.getResultList(); 我的结果集可能很大,所以我不想加载我的实体进行计数查询,所以请告诉我在Criteria上获取像rowCount()方法这样的总计数的有效方法(我认为它在Hibernate的Criteria中)。

从Eclipse远程部署Tomcat webapp

出于开发和测试目的,我想将我的webapp从eclipse中部署到远程tomcat服务器。 这可能吗 ? 如果没有,我应该如何设置我的开发环境以便顺利和轻松地进行远程部署?

不能访问封闭的类型实例

我在Eclipse中编写了这个Java接口程序,但在MyTriangle下面有一个红线tmp = new MyTriangle(); 当我运行程序时,我收到此错误: 不能访问Question1类型的封闭实例。 必须使用Question1类型的封闭实例限定分配(例如,xnew A(),其中x是Question1的实例)。 public static void main(String[] args) { MyTriangle tmp = new MyTriangle(); tmp.getSides(); System.out.println(); System.out.println(“The area of the triangle is ” + tmp.computeArea()); } interface Triangle { public void triangle(); public void iniTriangle(int side1, int side2, int side3); public void setSides(int side1, int side2, int side3); public void […]