说我有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) 我有一个带有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个文件! " 这个值变成一个变量?
我是SAML 2.0的新手.我无法SAML在亚马逊上找到一本书,它将指导你如何开始SAML,特别是SAML2.0.
我正在寻找SSO使用SAML和身份提供程序(开源)的端到端演示应用程序开发,以便我可以模拟结束SSO.所以,我的意思是,生成身份提供商,过程SAML消息令牌/发送回响应等,然后创建2个或多个域/登录模拟SSO成功或错误信息.
你知道新手中间或提前上的任何教程/书/资源SSO与SAML将不胜感激.
最后如何使用SAML的WS-Security?
可能重复:
如何解压缩字节数组中的gzip压缩数据?
我有一个Gzip字节数组,我只想解压缩它并打印输出.它是这样的:
byte[] gzip = getGZIPByteArray();
/* Code do uncompress the GZIP */
System.out.print(uncompressedGZIP);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我处理中间的代码吗?
有2个表EMPLOYEES,DEPARTMENTS并department_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论坛上被问到"如何替换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包?并且,是否有迁移指南?
谢谢你的帮助.
我是 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) 我正在处理托管在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) 我有一个 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 的方法?
这是我的一个实体的复合主键.
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)