小编Kar*_*ter的帖子

hibernate:LazyInitializationException:无法初始化代理

这是让我感到困惑的一个.我正在尝试实现一个基本的Hibernate DAO结构,但是遇到了问题.

这是基本代码:

int startingCount = sfdao.count();
sfdao.create( sf );
SecurityFiling sf2 = sfdao.read( sf.getId() );
sfdao.delete( sf );
int endingCount = sfdao.count();

assertTrue( startingCount == endingCount );
assertTrue( sf.getId().longValue() == sf2.getId().longValue() );
assertTrue( sf.getSfSubmissionType().equals( sf2.getSfSubmissionType() ) );
assertTrue( sf.getSfTransactionNumber().equals( sf2.getSfTransactionNumber() ) );
Run Code Online (Sandbox Code Playgroud)

它在第三个assertTrue上失败,它试图将sf中的值与sf2中的相应值进行比较.这是例外:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at com.freightgate.domain.SecurityFiling_$$_javassist_7.getSfSubmissionType(SecurityFiling_$$_javassist_7.java)
    at com.freightgate.dao.SecurityFilingTest.test(SecurityFilingTest.java:73)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
Run Code Online (Sandbox Code Playgroud)

hibernate initialization lazy-evaluation

70
推荐指数
4
解决办法
20万
查看次数

在测试期间注入@Autowired私有字段

我有一个组件设置,它本质上是一个应用程序的启动器.它的配置如下:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}
Run Code Online (Sandbox Code Playgroud)

MyService使用@ServiceSpring注释进行注释,并自动连接到我的启动器类中,没有任何问题.

我想为MyLauncher编写一些jUnit测试用例,为此我开始这样一个类:

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    public void someTest() {

    }
}
Run Code Online (Sandbox Code Playgroud)

我可以为MyService创建一个Mock对象并将其注入我的测试类中的myLauncher吗?我目前在myLauncher中没有getter或setter,因为Spring正在处理自动装配.如果可能的话,我不想添加getter和setter.我可以告诉测试用例使用@Beforeinit方法将模拟对象注入到自动装配的变量中吗?

如果我对此完全错误,请随意说出来.我还是新手.我的主要目标是只需要一些Java代码或注释,将模拟对象放在该@Autowired变量中,而不必编写setter方法或必须使用applicationContext-test.xml文件.我宁愿为.java文件中的测试用例维护所有内容,而不是仅为我的测试维护单独的应用程序内容.

我希望使用Mockito作为模拟对象.在过去,我通过使用org.mockito.Mockito和创建我的对象来完成此操作Mockito.mock(MyClass.class).

java junit spring unit-testing autowired

65
推荐指数
3
解决办法
10万
查看次数

Bash脚本错误:"功能:未找到".为什么会这样?

我正在尝试bash script在我的Ubuntu机器上运行,它给了我一个错误:

功能未找到

为了测试,我创建了以下脚本,它可以在我的笔记本电脑上正常工作但不能在我的桌面上工 任何想法为什么?如果相关,我的笔记本电脑是mac.

#!/bin/bash

function sayIt {   
   echo "hello world"
}

sayIt
Run Code Online (Sandbox Code Playgroud)

这会在我的笔记本电脑上返回"hello world",但在我的桌面上会返回:

run.sh:3:找不到函数hello world run.sh:5:语法错误:"}"意外

unix bash shell terminal ubuntu

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

使用匹配器组方法时"找不到匹配"

我正在使用Pattern/ Matcher来获取HTTP响应中的响应代码.groupCount返回1,但在尝试获取它时我得到一个例外!知道为什么吗?

这是代码:

//get response code
String firstHeader = reader.readLine();
Pattern responseCodePattern = Pattern.compile("^HTTP/1\\.1 (\\d+) OK$");
System.out.println(firstHeader);
System.out.println(responseCodePattern.matcher(firstHeader).matches());
System.out.println(responseCodePattern.matcher(firstHeader).groupCount());
System.out.println(responseCodePattern.matcher(firstHeader).group(0));
System.out.println(responseCodePattern.matcher(firstHeader).group(1));
responseCode = Integer.parseInt(responseCodePattern.matcher(firstHeader).group(1));
Run Code Online (Sandbox Code Playgroud)

这是输出:

HTTP/1.1 200 OK
true
1
Exception in thread "Thread-0" java.lang.IllegalStateException: No match found
 at java.util.regex.Matcher.group(Unknown Source)
 at cs236369.proxy.Response.<init>(Response.java:27)
 at cs236369.proxy.ProxyServer.start(ProxyServer.java:71)
 at tests.Hw3Tests$1.run(Hw3Tests.java:29)
 at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

java regex http-headers

54
推荐指数
3
解决办法
4万
查看次数

Java中此代码中的ExecutorService.submit和ExecutorService.execute有什么区别?

我正在学习用来ExectorService汇集threads和发送任务.我有一个简单的程序如下

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;


class Processor implements Runnable {

    private int id;

    public Processor(int id) {
        this.id = id;
    }

    public void run() {
        System.out.println("Starting: " + id);

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            System.out.println("sorry, being interupted, good bye!");
            System.out.println("Interrupted "+Thread.currentThread().getName());
            e.printStackTrace();    
        }

        System.out.println("Completed: " + id);
    }
}


public class ExecutorExample {

    public static void main(String[] args) {
        Boolean isCompleted=false;

        ExecutorService executor = Executors.newFixedThreadPool(2);

        for(int i=0; i<5; i++) {
            executor.execute(new …
Run Code Online (Sandbox Code Playgroud)

java multithreading executorservice threadpool

53
推荐指数
6
解决办法
7万
查看次数

如何使用GWT EventBus

我想知道如何使用EventBus或者是否有更好的解决方案来Event通过项目发送.

Widget1有一个Button.Widget2有一个Label,当我按下按钮时应该改变.这些小部件位于DockLayout:

RootLayoutPanel rootLayoutPanel = RootLayoutPanel.get();
DockLayoutPanel dock = new DockLayoutPanel(Unit.EM);

dock.addWest(new Widget1(), 10);
dock.add(new Widget2());

rootLayoutPanel.add(dock);
Run Code Online (Sandbox Code Playgroud)

我已宣布handleClickAlert进入Widget1:

@UiHandler("button")
void handleClickAlert(ClickEvent e) {
    //fireEvent(e); 
}
Run Code Online (Sandbox Code Playgroud)

java events gwt event-handling

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

防止在bash历史记录中保存重复项

我正在尝试阻止bash将重复命令保存到我的历史记录中.这是我得到的:

shopt -s histappend
export HISTIGNORE='&:ls:cd ~:cd ..:[bf]g:exit:h:history'
export HISTCONTROL=erasedups
export PROMPT_COMMAND='history -a'
Run Code Online (Sandbox Code Playgroud)

这在我登录并且.bash_history在内存中时工作正常.例如:

$ history
    1 vi .bashrc
    2 vi .alias
    3 cd /cygdrive
    4 cd ~jplemme
    5 vi .bashrc
    6 vi .alias

$ vi .bashrc

$ history
    1 vi .alias
    2 cd /cygdrive
    3 cd ~jplemme
    4 vi .alias
    5 vi .bashrc

$ vi .alias

$ history
    1 cd /cygdrive
    2 cd ~jplemme
    3 vi .bashrc
    4 vi .alias

$ exit
Run Code Online (Sandbox Code Playgroud)

但是当我重新登录时,我的历史文件看起来像这样:

$ history …
Run Code Online (Sandbox Code Playgroud)

bash command-line history cygwin

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

如何在Nexus 2.x中提供对工件的最新快照的URL访问?

我想提供一个简单的URL,它将始终返回最新版本的工件快照版本.简单来说,我的意思是URL不会改变,或者要求用户浏览目录并检查时间戳.

nexus maven

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

当您不是OpenJDK开发人员时,在哪里报告OpenJDK的问题?

首先我认为很奇怪,OpenJDK项目页面上没有与bug跟踪器的链接,然后我找到了bugs.openjdk.java.net,但它仅适用于经过认证的项目成员.象牙塔外的人们如何贡献问题?有邮件列表,有些人打电话给邮件列表错误跟踪发送问题和补丁......但是bug跟踪器的开发和使用是矛盾的.

openjdk issue-tracking

42
推荐指数
2
解决办法
1960
查看次数

使用diff的输出来创建补丁

我有类似的东西

src/sim/simulate.cc
41d40
< #include "mem/mem-interface.h"
90,91d88
<             dram_print_stats_common(curTick/500);
<
src/mem/physical.hh
52d51
<   public:
55,56d53
<       public:
<
58a56,57
>       public:
>
61,62c60,61
<         virtual bool recvTiming(PacketPtr pkt); //baoyg
<
---
Run Code Online (Sandbox Code Playgroud)

我相信这是使用源树中的diff命令创建的.我想要的是使用该输出创建补丁,并将相同的更改应用于我的源树.

diff patch

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