小编Tin*_*iny的帖子

如何在Hibernate中使用setParameterList()方法?

我需要根据ids提供的数组(如SELECT ... FROM table_name WHERE id IN()查询)从Oracle数据库中获取所选行.

在我试图这样做时,我试图org.hibernate.setParameterList(String name, Object[] values)在我的DAO中使用该方法如下.

@Service
@Transactional(readOnly = true, propagation=Propagation.REQUIRES_NEW)
public final class ProductImageDAO implements ProductImageService {

    @SuppressWarnings("unchecked")
    public List<Object[]> getFileName(String[] list) {
        return sessionFactory
                .getCurrentSession()
                .createQuery("SELECT prodImageId, prodImage FROM ProductImage WHERE prodImageId=:list")
                .setParameterList("list", list).list();
    }
}
Run Code Online (Sandbox Code Playgroud)

String[]给定方法中的类型参数由相应的Spring控制器类提供.

它会导致抛出以下异常.

org.hibernate.hql.ast.QuerySyntaxException:意外的令牌:,在第1行第78列附近[从model.ProductImage中选择prodImageId,prodImage,其中prodImageId =:id0_,:id1_,:id2_,:id3_,:id4_,:id5_]

根据ids使用Hibernate的列表检索所选行的方法是什么?

hibernate hql

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

通过远程EJB返回实体会导致在com.sun.corba.ee.impl.orbutil.ClassInfoCache $ ClassInfo中生成 - java.lang.NullPointerException.<init>

我正在尝试在以下环境中创建企业Web应用程序.

  • NetBeans 7.2.1
  • Glassfish Server 3.1.2(包含Servlet 3.0 API)
  • EJB 3.1
  • JPA 2.0
  • JSF 2.1
  • jdk 1.7
  • Oracle 10g

我创建了一个类库(New Project - > Java - > Java Class Library)来放置remote(javax.ejb.Remote)接口,该接口由无状态会话bean实现.类库已添加到两个模块(EJB和WAR)的类路径中.

我已将远程接口和所有实体类放在类库中(我不知道这是方法).

这适用于带注释的接口@Local.@Remote当我尝试返回实体的对象列表时,当JPA涉及时,它甚至可以使用但失败并出现以下异常.

java.rmi.MarshalException:CORBA MARSHAL 1330446347也许; 嵌套异常是:org.omg.CORBA.MARSHAL:警告:IOP00810011:CDRInputStream中的ValueHandler上的readValue异常vmcid:OMG次代码:11完成:也许

完整的堆栈跟踪.

javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream  vmcid: OMG  minor code: 11 completed: Maybe
    at remote.admin.sessionbeans._AdminRemoteSessionBeanRemote_Wrapper.getZones(remote/admin/sessionbeans/_AdminRemoteSessionBeanRemote_Wrapper.java)
    at managedbeans.ZoneBean.getZones(ZoneBean.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) …
Run Code Online (Sandbox Code Playgroud)

ejb corba glassfish java-ee

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

删除特定数据表上的所有边框

我需要使用PrimeFaces隐藏一个数据表的所有边界,而不是全部.我尝试了很多东西,没有人工作过.有谁知道怎么做?

我已经将以下样式(单独)应用于ui-datatable该类:

border: hidden !important;    
border-style: none !important;
Run Code Online (Sandbox Code Playgroud)

另一件事......

css datatable jsf border primefaces

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

Java EE 6中的EJB模块是什么?

当我在eclipse中创建一个新的Java EE 6项目时,我看到了许多类型的项目....

  • 企业应用
  • EJB模块
  • 企业应用客户端
  • 打包存档

这些不同的类型是什么?它们是什么意思?

netbeans java-ee java-ee-6

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

在Java中输入类型

可能重复:
我知道为什么需要在这里将整数文字转换为(int)?

package typecastingpkg;

public class Main
{        
    public static void main(String[] args)
    {
       byte a=10;
       Integer b=(int)-a;
       System.out.println(b);

       int x=25;
       Integer c=(Integer)(-x); // If the pair of brackets around -x are dropped, a compile-time error is issued - illegal start of type.
       System.out.println(c);

       Integer d=(int)-a;     //Compiles fine. Why does this not require a pair of braces around -a?
       System.out.println(d);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,在将-x基本类型int转换为包装类型时Integer,会产生编译时错误:illegal start of type.

Integer c=(Integer)-x;
Run Code Online (Sandbox Code Playgroud)

它需要一对大括号周围的-xInteger …

java casting compiler-errors type-conversion

8
推荐指数
2
解决办法
2896
查看次数

Varargs在Java中使用null参数

以下代码仅使用空引用作为varargs参数.

package currenttime;

import java.util.Arrays;

public class Main
{
    private static void temp(String...str)
    {
        System.out.println(Arrays.asList(str));
    }

    public static void main(String[] args)
    {
        temp(null,null);
        temp(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

第一次调用方法temp(null, null);显示[null, null]意味着str[0]=nullstr[1]=null.

但是后来的召唤temp(null);导致NullPointerException抛出它str本身就是这样null.

如果它的类型转换为String类似的东西temp((String)null);,它可以工作和显示[null].

为什么在最后一次调用中,需要显式类型转换?在我看来,它被认为是一个字符串数组,其null引用与第一次调用不同.什么是正确的答案?

java variadic-functions

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

JavaScript中的自动类型转换

JavaScript中的以下所有表达式都非常明显.

var x = 10 + 10;
Run Code Online (Sandbox Code Playgroud)

价值x20.

x = 10 + '10';
Run Code Online (Sandbox Code Playgroud)

x在这种情况下的值是1010因为+运算符过载.如果任何操作数是string类型,则进行字符串连接,如果所有操作数都是数字,则执行加法.

x = 10 - 10;
x = 10 - '10';
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,值x都是0因为-操作符没有以这种方式重载并且所有操作数都转换为数字,如果它们不是在执行实际减法之前(你可能会澄清,如果我错了) .


以下表达式会发生什么.

x = '100' - -'150';    
Run Code Online (Sandbox Code Playgroud)

价值x250.这似乎也是显而易见的,但这个表达看起来有点像下面的表达式.

x = '100' +'150';
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,则这两个字符串将被连接并分配100150x.那么为什么在这种情况下进行添加呢?


编辑:

+'10' + 5返回15'a' + + 'b'返回aNaN.有谁知道为什么?

javascript

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

如何使用Spring安全性成功登录后正确更新登录日期时间?

我正在使用Spring 3.2.0和相同版本的Spring安全性.成功登录后,用户将被重定向到其中一个受保护的页面,如下所示.

public final class LoginSuccessHandler implements AuthenticationSuccessHandler
{
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException
    {
        Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities());
        if (roles.contains("ROLE_ADMIN"))
        {
            response.sendRedirect("admin_side/Home.htm");
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Hibernate.如何在成功登录后更新数据库中的登录日期时间(上次登录)?我在登录页面上有一个提交按钮,其POST请求似乎没有映射到其相应登录控制器中的方法.登录表单的操作实际上映射到Servlet - j_spring_security_check.


spring-security.xml如果需要,整个文件如下.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
  xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http pattern="/Login.htm*" security="none"></http>    

    <http auto-config='true'>
    <!--<remember-me key="myAppKey"/>-->
        <session-management session-fixation-protection="newSession">
            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management>

        <intercept-url pattern="/admin_side/**" access="ROLE_ADMIN" requires-channel="any"/>
        <form-login login-page="/" default-target-url="/admin_side/Home.htm" authentication-failure-url="/LoginFailed.htm" authentication-success-handler-ref="loginSuccessHandler"/>
        <logout logout-success-url="/Login.htm" invalidate-session="true" delete-cookies="JSESSIONID"/> …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-security

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

当要发送的请求是多部分请求时,Spring CSRF令牌不起作用

我用,

  • Spring Framework 4.0.0 RELEASE(GA)
  • Spring Security 3.2.0 RELEASE(GA)
  • Struts 2.3.16

其中,我使用内置安全令牌来防范CSRF攻击.

Struts表单如下所示.

<s:form namespace="/admin_side"
        action="Category"
        enctype="multipart/form-data"
        method="POST"
        validate="true"
        id="dataForm"
        name="dataForm">

    <s:hidden name="%{#attr._csrf.parameterName}"
              value="%{#attr._csrf.token}"/>
</s:form>
Run Code Online (Sandbox Code Playgroud)

生成的HTML代码如下.

<form id="dataForm"
      name="dataForm"
      action="/TestStruts/admin_side/Category.action"
      method="POST"
      enctype="multipart/form-data">

    <input type="hidden"
           name="_csrf"
           value="3748c228-85c6-4c3f-accf-b17d1efba1c5" 
           id="dataForm__csrf">
</form>
Run Code Online (Sandbox Code Playgroud)

这工作正常,除非请求是多部分,在这种情况下,请求以状态代码403结束.

HTTP状态403 - 在请求参数'_csrf'或标题'X-CSRF-TOKEN'上找到无效的CSRF令牌'null'.

类型状态报告

消息无效的CSRF令牌'null'在请求参数'_csrf'或标题'X-CSRF-TOKEN'上找到.

description禁止访问指定的资源.

spring-security.xml文件如下.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <http pattern="/Login.jsp*" security="none"></http>

    <http auto-config='true' use-expressions="true" disable-url-rewriting="true" authentication-manager-ref="authenticationManager">
        <session-management session-fixation-protection="newSession">
            <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
        </session-management>

        <csrf/>

        <headers> …
Run Code Online (Sandbox Code Playgroud)

spring struts2 csrf spring-security csrf-protection

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

从p:remoteCommand的oncomplete处理程序调用JavaScript函数 - 使用一些JavaScript代码模拟相同的函数

注意:虽然这个问题涵盖了大量Java代码片段的长文本信息,但它仅仅针对JavaScript/jQuery以及一些PrimeFaces的东西(只是<p:remoteCommand>),如开头的介绍部分所述.


我收到来自WebSockets(Java EE 7/JSR 356 WebSocket API)的JSON消息,如下所示.

if (window.WebSocket) {
    var ws = new WebSocket("wss://localhost:8181/ContextPath/AdminPush");

    ws.onmessage = function (event) {
        jsonMsg=event.data;
        var json = JSON.parse(jsonMsg);        
        var msg=json["jsonMessage"];

        if (window[msg]) {
            window[msg](); //It is literally interpreted as a function - updateModel();
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,event.data包含一个JSON字符串{"jsonMessage":"updateModel"}.因此,msg将包含一个字符串值updateModel.

在以下代码段中,

if (window[msg]) {
    window[msg](); //It is literally interpreted as a JavaScript function - updateModel();
}
Run Code Online (Sandbox Code Playgroud)

window[msg]();导致与a关联的JavaScript函数<p:remoteCommand>被调用(后者又调用actionListener="#{bean.remoteAction}"与之关联的函数<p:remoteCommand>).

<p:remoteCommand …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jsf primefaces jsf-2.2

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