小编Min*_*tis的帖子

JPA计数NamedQuery

如何使用namedquery计数,而不是获取所有列表(它会提高我认为的性能).这是不起作用的命名查询:

@NamedQuery(name = "Charakteristika.findAllCount", query = "SELECT COUNT(c) FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)

执行此:

System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount", Integer.class).getSingleResult().intValue());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)

输出:

a
Run Code Online (Sandbox Code Playgroud)

虽然此查询有效:

@NamedQuery(name = "Charakteristika.findAll", query = "SELECT c FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)

执行此:

System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAll", Charakteristika.class).getResultList().size());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)

输出:

a
11111
b
Run Code Online (Sandbox Code Playgroud)

java jpa named-query

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

Java数组排序UTF-8

我想排序,ArrayList<String>但问题是我的母语字符 - 我的字母是这样的:a, ?, b, c, ?, d, e, f ... z, ž.如你所见,z字符从结尾开始?是第二位,在字母表中排在第二位,因此在对数组进行排序后,它排序不正确.我的所有母语字符都移动到数组的末尾.例:

package lt;

import java.util.ArrayList;
import java.util.Collections;

public class test {
    public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("bbc");
        items.add("?bc");
        items.add("abc");
        items.add("zzz");

        System.out.println("Unsorted: ");
        for(String str : items) {
            System.out.println(str);
        }

        Collections.sort(items);
        System.out.println();

        System.out.println("Sorted: ");
        for(String str : items) {
            System.out.println(str);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Unsorted: 
bbc
?bc
abc
zzz

Sorted: 
abc
bbc
zzz
?bc
Run Code Online (Sandbox Code Playgroud)

应该: …

java sorting collation utf-8

20
推荐指数
2
解决办法
6864
查看次数

不带<jar-file>的不同服务器上的EclipseLink复合持久性单元

我的问题几乎在这个帖子中回答:

EclipseLink,EntityManager需要两个持久性单元

但我使用一个persistence.xml文件来声明3个持久性单元,它工作正常.但现在我需要一个复合持久性单元,我不知道也不想为每个持久性单元构建单独的jar.没有<jar-file>标签,有没有办法做到这一点.如果不是,有人能给我一个如何使用单个持久性单元制作jar文件的示例吗?

编辑1: 这个配置我最终得到了,但它仍然不起作用 - 我得到的是这个输出,当我尝试使用em.createNamedQuery(当我有单独的持久性单位时,巫婆工作)没有任何反应代码停止createEntity行,就是这样.

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="eclipselink.composite-unit" value="true"/>
    </properties>
  </persistence-unit>
    <persistence-unit name="Minutis" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>database.entity.Entity1</class>
    <class>database.entity.Entity2</class>
    ...
    <properties>
      <property name="eclipselink.composite-unit.member" value="true"/>
    </properties>
  </persistence-unit>
  <persistence-unit name="Minutis2" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>database.entity.EEntity1</class>
    <class>database.entity.EEntity2</class>
    ...
    <properties>
      <property name="eclipselink.composite-unit.member" value="true"/>
    </properties>
  </persistence-unit>
  <persistence-unit name="Minutis3" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>database.entity.EEEntity1</class>
    <class>database.entity.EEEntity2</class>
    ...
    <properties>
      <property name="eclipselink.composite-unit.member" value="true"/>
    </properties>
  </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

这是如何EntityManager创建的:

Map minutis = new HashMap();
minutis.put("javax.persistence.jdbc.user", "user");
minutis.put("javax.persistence.jdbc.password", …
Run Code Online (Sandbox Code Playgroud)

persistence eclipselink

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

JTable,JComboBox使用自定义对象

嗨,如果您将JComboBox放在JTable和String []数组中给JComboBox一切正常.Buf如果您将自己的数据类型放到JComboBox中,则选择同一列中的值会变得复杂.这是官方的例子.尝试更改以下部分:

JComboBox comboBox = new JComboBox();
comboBox.addItem("Snowboarding");
comboBox.addItem("Rowing");
comboBox.addItem("Knitting");
comboBox.addItem("Speed reading");
comboBox.addItem("Pool");
comboBox.addItem("None of the above");
sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
Run Code Online (Sandbox Code Playgroud)

成:

JComboBox comboBox = new JComboBox();
comboBox.addItem(new Test("Snowboarding"));
comboBox.addItem(new Test("Rowing"));
comboBox.addItem(new Test("Knitting"));
comboBox.addItem(new Test("Speed reading"));
comboBox.addItem(new Test("Pool"));
comboBox.addItem(new Test("None of the above"));
sportColumn.setCellEditor(new DefaultCellEditor(comboBox));
Run Code Online (Sandbox Code Playgroud)

并创建新的数据类型:

public class Test {
    private String name;

    public Test(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

你会看到,当你点击女巫中的表格单元格时,会有一个带有自定义数据类型的JComboBox.自动选择第一列单元格的值.如何解决这个问题?

编辑1:我添加了SSCCE.

主类:

import java.awt.BorderLayout;

public class windw extends …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jcombobox

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

禁用JPA EclipseLink 2.4缓存

我正在尝试禁用EclipseLink 2.4缓存,因此如果其他应用程序在数据库中更改了数据,则在我的应用程序中刷新相同的数据,该应用程序使用EclipseLink 2.4,而无需重新启动它.这些属性似乎都不起作用:

<shared-cache-mode>NONE</shared-cache-mode>
...
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.cache.size.default" value="0"/>
<property name="eclipselink.cache.type.default" value="NONE"/>
<property name="eclipselink.query-results-cache" value="false"/>
<property name="eclipselink.refresh" value="true"/>
Run Code Online (Sandbox Code Playgroud)

帮助的唯一选择是:

typedQuery.setHint(QueryHints.REFRESH, HintValues.TRUE);
Run Code Online (Sandbox Code Playgroud)

但是,这不是我的选择,因为现在的应用程序所写的,我不希望搜索所有查询或em.find()方法,并把这种暗示英寸

编辑1:此处描述了类似的问题:http://eclipse.1072660.n5.nabble.com/Notifications-about-external-database-changes-td5389.html

EDIT2:总结我想,所有的查询,并找到调用将刷新从数据库中获取数据.

java caching jpa eclipselink

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

当选择0索引时删除和添加时,Swing JList冻结

这是一个示例,其中您按下按钮,并且jList1重新填充了从a1到a1000的项目:

//variable
private List<String> list = new ArrayList<>();

...

//main method
jList1.setModel(new DefaultListModel());
for(int i = 0; i < 1000; i++) {
    list.add("a"+i);
}

...

//button action - jList1 refill
DefaultListModel dtm = (DefaultListModel)jList1.getModel();
dtm.removeAllElements();
for(String s : list) {
    dtm.addElement(s);
}
Run Code Online (Sandbox Code Playgroud)

如果我填充jList1,然后选择(用鼠标)0索引(jList中的第一个元素),然后按按钮,程序将在重新填充列表时冻结。如果我选择任何其他元素,或者根本不选择列表中的任何项目,则可以很好地填充它。

PS本示例在没有任何摆动或EWT线程的情况下完成,因为发现了使用它们的主要原因。

SSCCE:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lt;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListModel; …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jlist

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

JProgressBar在新线程JDialog中

我想在新的JDialog中制作JProgressBar,女巫将与主逻辑分开.因此,只需创建新的JDialog并完成处理JDialog的进度,我就可以开始不确定的进步.但它让我很难实现这一点,因为在JDialog出现之后它不会显示任何组件(包括JProgressBar),直到主线程(SwingUtilities)中的逻辑完成.

线程包括JDialog:

package gui.progress;

public class ProgressThread extends Thread {
    private ProgressBar progressBar = null;

    public ProgressThread() {
        super();
    }

    @Override
    public void run() {
        progressBar = new ProgressBar(null);
        progressBar.setVisible(true);
    }

    public void stopThread() {
        progressBar.dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

JProgressBar切换方法:

private static ProgressThread progressThread = null;
...
public static void toggleProcessBar() {
    if(progressThread == null) {
        progressThread = new ProgressThread();
        progressThread.start();
    } else {
        progressThread.stopThread();
        progressThread = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

java concurrency swing multithreading jprogressbar

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