小编Has*_*ash的帖子

我该如何编写这个JPQL查询?

说我有5张桌子,

tblBlogs     tblBlogPosts     tblBlogPostComment    tblUser    tblBlogMember
BlogId        BlogPostsId       BlogPostCommentId   UserId      BlogMemberId
BlogTitle     BlogId            CommentText         FirstName   UserId
              PostTitle         BlogPostsId                     BlogId
                                 BlogMemberId
Run Code Online (Sandbox Code Playgroud)

现在我想只检索blogMember实际评论过的那些博客和帖子.简而言之,我该如何编写这个普通的旧SQL?

SELECT b.BlogTitle, bp.PostTitle, bpc.CommentText FROM tblBlogs b 
INNER JOIN tblBlogPosts bp on b.BlogId = bp.BlogId 
INNER JOIN tblBlogPostComment bpc on bp.BlogPostsId = bpc.BlogPostsId 
INNER JOIN  tblBlogMember bm ON bpc.BlogMemberId = bm.BlogMemberId 
WHERE bm.UserId = 1;
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,一切都是内连接,因此只检索用户在某些博客的某些帖子上评论过的那一行.所以,假设他/她加入了3个博客,其ID为1,2,3(用户加入的博客在tblBlogMembers中),但用户只在博客2中评论过(比如BlogPostId = 1).因此,将检索该行,并且1,3将不会因为它是内部联接.如何在JPQL中编写这种查询?

在JPQL中,我们只能编写简单的查询,例如:

Select bm.blogId from tblBlogMember Where bm.UserId = objUser;
Run Code Online (Sandbox Code Playgroud)

使用objUser提供的地方:

em.find(User.class,1);
Run Code Online (Sandbox Code Playgroud)

因此,一旦我们获得了用户加入的所有博客(此处为blogId代表博客对象),我们就可以循环并完成所有奇特的事情.但我不想陷入这种循环业务,并在我的Java代码中编写所有这些内容.相反,我想把它留给数据库引擎来做.那么,我如何将上述纯SQL写入JPQL?JPQL查询返回什么类型的对象?因为我只从所有表中选择几个字段.我应该在哪个类中对结果进行类型转换?

我想我正确地发布了我的要求,如果我不清楚请告诉我.

更新:根据pascal的回答,我尝试为上述SQL查询编写JPQL查询.我面临一个小问题.此查询正在运行,但不完整:

SELECT bm.blogId FROM BlogMembers bm …
Run Code Online (Sandbox Code Playgroud)

java orm jpa jpql

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

PLSQL从XML读取值?

我有一个带有XML代码的字符串,我想从PL/SQL中将一个值提取到一个变量中.

XML非常简单,与此不同:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <SOAProxyResponse xmlns="http://tempuri.org/">
            <SOAProxyResult>
                There is 23142 Files!
            </SOAProxyResult>
        </SOAProxyResponse>
    </s:Body>
</s:Envelope
Run Code Online (Sandbox Code Playgroud)

我怎样才能将上面例子中的" 有23142个文件! " 这个值变成一个变量?

xml plsql plsqldeveloper

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

如何使用Java,Java EE实现SAML sso

我是SAML 2.0的新手.我无法SAML在亚马逊上找到一本书,它将指导你如何开始SAML,特别是SAML2.0.

我正在寻找SSO使用SAML和身份提供程序(开源)的端到端演示应用程序开发,以便我可以模拟结束SSO.所以,我的意思是,生成身份提供商,过程SAML消息令牌/发送回响应等,然后创建2个或多个域/登录模拟SSO成功或错误信息.

你知道新手中间或提前上的任何教程/书/资源SSOSAML将不胜感激.

最后如何使用SAMLWS-Security

java web-services java-ee single-sign-on saml-2.0

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

用Java解压缩GZIP字符串

可能重复:
如何解压缩字节数组中的gzip压缩数据?

我有一个Gzip字节数组,我只想解压缩它并打印输出.它是这样的:

byte[] gzip = getGZIPByteArray();

/* Code do uncompress the GZIP */

System.out.print(uncompressedGZIP);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我处理中间的代码吗?

java

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

PL/SQL FOR LOOP IMPLICIT CURSOR

有2个表EMPLOYEES,DEPARTMENTSdepartment_id作为主键DEPARTMENTS和外键EMPLOYEES.

我想打印属于特定部门的所有员工姓名.我知道它可以通过JOINS或EXPLICIT游标轻松实现.我想为什么不试试FOR循环和IMPLICIT游标.

我的问题是,如果这样编写在语法上是正确的INTO.如果是这样,为什么不分配任何值?

DECLARE
    emp_dept_id employees.department_id%TYPE;
    emp_emp_id employees.employee_id%TYPE;
    emp_last_name employees.last_name%TYPE;
    dept_dept_id departments.department_id%TYPE;
    dept_dept_name departments.department_name%TYPE;
    v_count number DEFAULT 0;
BEGIN
    FOR i IN (SELECT DISTINCT department_id, department_name
                INTO dept_dept_id, dept_dept_name
        FROM departments)
    LOOP
        --v_COUNT := v_COUNT + 1;
        DBMS_OUTPUT.PUT_LINE('HELLO'||dept_dept_id||' '||dept_dept_name);
        FOR j IN (SELECT employee_id, last_name
            INTO emp_emp_id, emp_last_name
            FROM employees)
            --WHERE department_id=dept_dept_id)
        LOOP
            DBMS_OUTPUT.PUT_LINE(emp_emp_id||' '||emp_last_name);
            v_COUNT := v_COUNT + 1;
        END LOOP;
    END LOOP; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql for-loop cursor

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

是什么取代了Java的sun.security包?

这个问题在Oracle论坛上被问到"如何替换sun.security包??" (https://forums.oracle.com/thread/2560664),但尚未收到回复.

我们有一个目前使用的应用程序:

import sun.security.provider.X509Factory;

import sun.security.x509.AlgorithmId;

import sun.security.x509.X509CertInfo;

import sun.security.x509.X509CertImpl;

import sun.security.x509.CertificateAlgorithmId;

import sun.security.x509.CertificateValidity;

import sun.security.x509.CertificateSerialNumber;

import sun.security.x509.CertificateSubjectName;

import sun.security.x509.CertificateIssuerName;

import sun.security.x509.CertificateX509Key;

import sun.security.x509.CertificateVersion;

所有这些都产生一个编译时消息,其中包含:"......内部专有API,可能会在将来的版本中删除"

有java和javax安全包,但它们似乎不包含sun.security.x509等的等价物.

什么应该用来取代sun.security包?并且,是否有迁移指南?

谢谢你的帮助.

migration security x509

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

SOAPHandler 的 handleMessage 方法没有被调用,而是 getHeaders 被调用

我是 SOAP 世界的新手。

我已经使用 maven 插件将wsdl文件转换为java

下面是 pom.xml 配置。

<plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.1.12</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${project.basedir}/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${project.basedir}/src/main/resources/EIAproxy.wsdl</wsdl>
                                <wsdlLocation>classpath:EIAproxy.wsdl</wsdlLocation>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

下面是类文件

接口定义

@WebService(targetNamespace = "http://schema.concierge.com", name = "EaiEnvelopeSoap")
@XmlSeeAlso({com.concierge.schema.envelope.ObjectFactory.class, ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface EaiEnvelopeSoap {

@WebResult(name = "clientRequestResponse", targetNamespace = "http://schema.concierge.com", partName = "parameters")
@WebMethod(action = "http://www.openuri.org/clientRequest")
  public ClientRequestResponse clientRequest(
    @WebParam(partName = "parameters", name = "clientRequest", targetNamespace = "http://schema.concierge.com")
    ClientRequest parameters
); …
Run Code Online (Sandbox Code Playgroud)

java soap web-services soap-client maven

6
推荐指数
0
解决办法
1547
查看次数

从http重定向到https - 无限循环

我正在处理托管在Tomcat服务器上的Java Web应用程序.我必须设置从www到非www和从http到https的重定向.我想要以下三个网址:

重定向到

为此,我使用UrlRewriteFiltertuckey.org的4.0.3版.这是我的urlrewrite.xml档案:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
<urlrewrite> 
  <rule> 
    <name>Redirect www to non-www and http to https</name> 
    <condition type="request-url" operator="equal">(^http://example.com|^http://www.example.com|^https://www.example.com)</condition> 
    <from>^(.*)$</from> 
    <to type="permanent-redirect" last="true">https://example.com$1</to> 
  </rule> 
</urlrewrite> 
Run Code Online (Sandbox Code Playgroud)

重定向工作但网站没有加载,浏览器显示消息:

这个页面不起作用
example.com重定向了你太多次了.

我使用了重定向检查器,发现在初次重定向到https://example.com/之后,另一个重定向到https://example.com/,然后是另一个,依此类推 - 该URL重定向到自身.我不明白是什么产生了这种无限循环.任何帮助,将不胜感激!

更新:我还没有解决方案.如果我从条件元素中删除第一个URL,则其他两个重定向工作正常,但问题是如何从http://example.com设置重定向.

我尝试了另一种方法 - 通过粘贴以下代码在web.xml文件中设置重定向到https:

<security-constraint> 
  <web-resource-collection> 
    <web-resource-name>all</web-resource-name> 
    <url-pattern>/*</url-pattern> 
  </web-resource-collection> 
  <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
  </user-data-constraint> 
</security-constraint> 
Run Code Online (Sandbox Code Playgroud)

结果是相同的 - https://example.com在无限循环中重定向到自身.在这种情况下唯一的区别是重定向是状态代码302.任何关于导致此问题的原因以及如何解决它的想法?

更新:这是使用时curl命令的输出UrlRewriteFilter:


运行结果: curl http://example.com

响应标题

HTTP/1.1 301 Moved …
Run Code Online (Sandbox Code Playgroud)

java ssl https tuckey-urlrewrite-filter url-redirection

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

通过java将PKCS#1格式的私钥转换为PKCS#8格式的私钥

我有一个 PKCS#1 格式的私钥(由 opendkim-genkey 生成),如下所示

-----BEGIN RSA PRIVATE KEY-----

Base64 encoded data

-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

现在我必须在Java中使用它来生成java.security.PrivateKey

但Java仅支持PKCS#8格式的私钥。

我知道有一种方法可以通过 Java 从 PKCS#8 转换为 PKCS#1(使用 Bouncycastle),但是是否有通过 Java 从 PKCS#1 转换为 PKCS#8 的方法?

java pkcs#8 pkcs#1 private-key

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

@IdClass JPA Annotation

这是我的一个实体的复合主键.

public class GroupMembershipPK implements Serializable{

    private static final long serialVersionUID = 7816433876820743311L;

    private User user;
    private Group group;

    public GroupMembershipPK(){
    }

    public boolean equals(Object o){
        if(o==null){
            return false;
        }

        if(o instanceof GroupMembershipPK){
            final GroupMembershipPK groupMembershipPK=(GroupMembershipPK)o;
            return groupMembershipPK.group.getGroupName().equals(this.group.getGroupName()) &&
                groupMembershipPK.user.getName().equals(this.user.getName());
        }
        return false;
    }

    public int hashCode(){
        return super.hashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

继承我的实体(部分)使用上面的复合主键.

@Entity
@IdClass(GroupMembershipPK.class)
public class GroupMembership extends AbstractModelElementVersionOther{

    private static final long serialVersionUID = 9188465566607060376L;

    private String memType;
    private Group group;
    private User user;

    public GroupMembership(){
        super();
    }

    @Column(nullable=false) …
Run Code Online (Sandbox Code Playgroud)

jpa

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