小编Jus*_*yul的帖子

Hibernate构造函数

初始化在使用hibernate持久化的类的构造函数中的集合有什么问题吗?

我遇到.equal实现的问题,因为如果一个对象加载了hibernate,它的集合即使它们是空的也会被初始化,即它们只是空集.在新构造的对象中,它们为空.我知道这可以用相同的方法处理,但它有点乱,因为null并不等于空集.

我遗漏了构造函数的原因,如果我认为从性能的角度来看初始化类的Set属性(创建新的HashSets或类似的东西)没有意义,然后让hibernate重新初始化它们(我是猜猜会吗?).

我应该不担心这个并初始化构造函数中的Set数据结构吗?或者可以为手动初始化新实例的情况创建一个特殊的构造函数.

java hibernate

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

Hibernate,fetch,HQL和hashCode()

我有一个HQL查询的东西ala'

SELECT myclass 
FROM 
    MyClass myclass JOIN FETCH 
    myclass.anotherset sub JOIN FETCH 
    sub.yetanotherset
...
Run Code Online (Sandbox Code Playgroud)

因此,类MyClass有一个属性"anotherset",它是一个包含另一个类的实例的集合,我们称之为MyClassTwo.而且,类MyClassTwo有一个属性yetanotherset,它是一组第三类类(没有进一步的关联).

在这种情况下,我遇到了hashCode实现的问题.基本上,MyClassTwo的hashCode实现使用"yetanotherset"属性,并且在确切的行上它访问yetanothertest属性,它失败并带有LazyInitializationException.

org.hibernate.LazyInitializationException: illegal access to loading collection 
Run Code Online (Sandbox Code Playgroud)

我猜,这是因为"yetanotherset"的数据尚未获取,但我该如何解决这个问题呢?我并不特别喜欢将hashCode调低以忽略该属性的想法.

另外一个问题,HQL是否忽略了XML或注释中定义的fetch = FetchType.EAGER,它似乎就是这样.但我无法在任何地方验证这一点.

java hibernate

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

我的时钟没有显示第二次增加

为什么我的时钟没有显示秒数增加?

public class timeTest extends javax.swing.JFrame {

    public timeTest() {
        initComponents();
        showTime();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new timeTest().setVisible(true);
            }
        });
    }

    private javax.swing.JLabel timeLable;

    private void showTime() {
        Timer timer = new Timer(100, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Calendar time = Calendar.getInstance();
                timeLable.setText(time.getTime().toString());
            }
        });
        timer.setRepeats(false);
        timer.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有编写代码,它是由IDE生成的.

java time swing

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

编译和运行时类

让我们想象一下,我有一个叫做Person另一个类的泛化的类Man.如果我要做这个类的几个实例

Man man = new Man();
Person person = new Man();
Run Code Online (Sandbox Code Playgroud)

现在,编译时类的实例是从该变量引用manMan和编译时类的人Person,而运行时类两种情况下的是Man.到目前为止,我完全已经使用了术语,因为在运行时创建的实例都属于类Man.但是,如果我在哪里施放man实例如下

Person personMan = (Person) man;
Run Code Online (Sandbox Code Playgroud)

为什么运行时类型personMan仍然是Man?是否仅在创建新实例时设置实例的运行时类?另外,有没有办法在运行时实际获取变量的编译时类,因此我可以查询personMan类的类型(getClass将返回Man).

编辑:"类的编译时类"是一个错误(并没有多大意义).我的意思是变量(因此他们质疑类人类是什么类型:))

java

0
推荐指数
1
解决办法
106
查看次数

标签 统计

java ×4

hibernate ×2

swing ×1

time ×1