小编Has*_*cay的帖子

在JPA中使用TypedQuery而不是普通的Query

是否可以将此Query作为TypedQuery编写,让两个Long运行到一个内部有两个公共Long字段的Object中.

    Query q = em.createQuery(
            "SELECT c.id, COUNT(t.id) " +
            "FROM PubText t " +
            "JOIN t.comm c " +
            "WHERE c.element = ?1 " +
            "GROUP BY c.id");
    q.setParameter(1, e);
    List<?> rl = q.getResultList();
    Iterator<?> it = rl.iterator();
    HashMap<Long, Long> res = new HashMap<Long, Long>();
    while (it.hasNext()) {
        Object[] n = (Object[]) it.next();
        res.put((Long)n[0], (Long)n[1]);
    }
    return res;
Run Code Online (Sandbox Code Playgroud)

jpa jpql java-ee glassfish-3

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

Java使用带引号的String常量

当我将此常量字符串与MB内部与具有MB的变量进行比较时,结果为false.字符串常量看起来像"MB"([",M,B,"] = 4长度),我的变量是"MB"([M,B] = 2长度).这里有什么不对.Java无法将代码中的引号放入字符串中.

字符串常量

Var 2

public static final String gc_TelCodeFixed  = "FX";

if (!telcode.getId().equals(com.quoka.qis.db.constant.Constants.gc_TelCodeFixed)) 
    throw new TelcodeTypeMismatchException(telcode.getType()); 
Run Code Online (Sandbox Code Playgroud)

java eclipse debugging

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

调用EJB中的异步方法

我尝试异步保存统计信息登录过程的结果到数据库,以节省登录方法的时间.但是如果我向异步方法添加thread.sleep,登录过程会花费更长的时间.这是为什么?我认为authenticate方法不会等待writeResultToStats方法完成.

    @Stateless
    @LocalBean
    @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
    @TransactionManagement(TransactionManagementType.CONTAINER)
    public class CustomerBeanTest {

        @PersistenceContext(unitName = WebPersistenceUnits.QISADS)
        private EntityManager em_local;

        @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
        public void authenticate(Long loginid, String cmppassword) {
            try {
                Login l = em_local.find(Login.class, loginid);
                String s = l.getPassword();
                if (!s.equalsIgnoreCase(cmppassword))
                    throw new PasswordMissmatchException();
                writeResultToStats(loginid, true);
            } catch (PasswordMissmatchException e) {
                writeResultToStats(loginid, false);
            }
        }

        @Asynchronous
        @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
        private void writeResultToStats(Long loginID, boolean success) {

            try { // just for testing
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            LogUtils log …
Run Code Online (Sandbox Code Playgroud)

asynchronous java-ee ejb-3.0 ejb-3.1 glassfish-3

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

Glassfish v3服务器上的JPA日志记录级别

<property name="eclipselink.logging.level" value="FINE" />
Run Code Online (Sandbox Code Playgroud)

如何设置服务器的日志记录级别。我想在开发服务器上看到Level.FINE。但是,当然只有生产服务器上的Level.WARNING。

如果将上面的行放入persistence.xml中,则会在两台计算机上自动进行设置。我必须记得手动关闭它。那当然很危险。

非常感谢。

jpa glassfish-3

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

捕获消息驱动Bean(MDB)中的异常

我该如何处理mdb中的异常?我有一种有趣的感觉,异常发生在try catch块之后,所以我无法捕获并记录它.Glassfish v3决定重复整个信息.它会运行到一个无限循环中,并在硬盘上写入很多日志文件.

我正在使用Glassfishv3.01 + Eclipselink 2.0.1

public class SaveAdMessageDrivenBean implements MessageListener {

    @PersistenceContext(unitName="QIS") 
    private EntityManager em;

    @Resource
    private MessageDrivenContext mdc;

    public void onMessage(Message message) {
        try {
            if (message instanceof ObjectMessage) {
                ObjectMessage obj = (ObjectMessage)message;
                AnalyzerResult alyzres = (AnalyzerResult)obj.getObject();
                save(alyzres);
            }
        } catch (Throwable e) { 
            mdc.setRollbackOnly();
            log.log(Level.SEVERE, e);
        }
    }

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    private void save(AnalyzerResult alyzres) throws PrdItemNotFoundException {

       Some s = em.find(Some.class, somepk);
       s.setSomeField("newvalue");

       // SQL Exception happens after leaving this method because of missing field for …
Run Code Online (Sandbox Code Playgroud)

java jpa eclipselink glassfish-3

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

Intellij替换stringbuilder.toString()的所有出现

我想找到属于StringBuilder的toString方法的所有出现:

StringBuilder sb = new StringBuilder();
sb.append("sometext");
return sb.toString();
Run Code Online (Sandbox Code Playgroud)

并替换为:

StringBuilder sb = new StringBuilder();
sb.append("sometext");
return Optimizer.stat(sb.toString());
Run Code Online (Sandbox Code Playgroud)

当然var"sb"并不总是以相同的方式编写:-)

我尝试了IntelliJ Ultimate Structural Search和Replace.但我找不到只能获得StringBuilder类的String的方法.

非常感谢.

java intellij-idea structural-search

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