如何使用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) 我想排序,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)
应该: …
我的问题几乎在这个帖子中回答:
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) 嗨,如果您将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) 我正在尝试禁用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:总结我想,所有的查询,并找到调用将刷新从数据库中获取数据.
这是一个示例,其中您按下按钮,并且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) 我想在新的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 ×6
swing ×3
eclipselink ×2
jpa ×2
caching ×1
collation ×1
concurrency ×1
jcombobox ×1
jlist ×1
jprogressbar ×1
jtable ×1
named-query ×1
persistence ×1
sorting ×1
utf-8 ×1