假设我有一个班级妈妈,他们有一个toToMany映射到小猫
@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true)
@Table(name = "Mother")
.....
@OneToMany(fetch = FetchType.LAZY, targetEntity=Kittens.class, cascade=CascadeType.ALL)
@JoinColumn(name="motherId")
private List<Kittens> kittens;
Run Code Online (Sandbox Code Playgroud)
我使用标准Api来提供列表
Criteria criteria = this.getSession().createCriteria(Mother.class);
Criterion MotherType = Restrictions.eq("type", "domesticated");
criteria.add(MotherType)
.addOrder(Order.asc("motherName"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.setFetchMode("kittens", FetchMode.JOIN)
// .addOrder(Order.asc("kittens.kittenName"));
List test = criteria.list();
Run Code Online (Sandbox Code Playgroud)
工作正常,直到我尝试添加小猫字段kittenName的顺序
我也尝试在Kitten @OneToMany(...等)下添加@OrderBy(value ="kittenName")注释,该工作正常,直到你使用条件API,这个顺序将在sql中的任何其他order语句之前.
提前干杯以获得任何帮助......
我正在寻找一种java驱动的解决方案来满足分析句子的要求,以记录关键词是正面还是负面使用.
即关键词可能是'cabbages'和句子: -
'我喜欢卷心菜但不喜欢豌豆'
我想要一个java文本分析器来记录这个积极的东西.lucene(Hibernate-Search)库可以用于此吗?
有什么想法吗?
使用hibernate ctiteria我想选择一个对象,它与oneToMany对象列表相关联.我想通过这个列表分页,避免可怕的hibernate n + 1选择问题
这是一个有效的解决方案,需要11个数据库访问10个父对象.
Criteria criteria = this.getSession().createCriteria(Mother.class);
criteria.addOrder(Order.asc("title"))
.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStartResult())
.setFetchMode("kittens", FetchMode.SELECT);
List test = criteria.list();
Run Code Online (Sandbox Code Playgroud)
这里是一个只执行一个sql语句(hurray)但不能处理分页的解决方案,即父对象上的setMaxResults和setFirstResult不正确Mother(boo)
Criteria criteria = this.getSession().createCriteria(Mother.class);
criteria.addOrder(Order.asc("title"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStartResult())
.setFetchMode("kittens", FetchMode.JOIN);
List test = criteria.list();
Run Code Online (Sandbox Code Playgroud)
这似乎是一个常见的要求,但我已经挖掘出一个没有运气的解决方案.
任何接受者?
我正在努力创建一个使用setFetchMode(... SELECT)的Hibernate条件查询,并对返回的子记录设置限制.如果我按照建议使用creteAlias,它会产生一个内部连接,从而使得准确的分页几乎不可能.
代码如下: -
Criteria criteria = this.getSession().createCriteria(Mother.class);
criteria.addOrder(Order.asc("title"))
// .createAlias("children", "childrenAlias") had to remove
.add(Restrictions.eq("childAge", "5")) // how do I reference childAge?
.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStart())
.setFetchMode("children", FetchMode.SELECT);
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用jsoup来清理从我的客户端中的一个wysiwyg发布的html(当它发生时)
松弛模式看起来不够宽松,因为默认情况下它会剥离span元素和任何样式属性.
例如
String text = "<p style="color: #ff0000;">foobar</p>";
Jsoup.clean(text, Whitelist.relaxed());
Run Code Online (Sandbox Code Playgroud)
会输出
<p>foobar</p>
Run Code Online (Sandbox Code Playgroud)
和
<span>foobar</span>
Run Code Online (Sandbox Code Playgroud)
将完全删除.
有没有人有任何使用Jsoup消除XSS攻击可能性的经验,仍然允许上述元素和属性通过?
编辑:我已经使用以下内容了.任何人都可以建议这是多么脆弱吗?
Jsoup.clean(pitch, Whitelist.relaxed().addTags("span").addAttributes(":all","style"));
Run Code Online (Sandbox Code Playgroud)
编辑2:是否有人在生产中使用了owasp库.它看起来正确消毒,同时保留正确的样式.OWASP
在我的web.xml中,我有以下映射
<servlet-mapping>
<servlet-name>mySite</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>mySite</servlet-name>
<url-pattern>/articles/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
目前它处理文件扩展名为.html的网址.但是,我希望能够处理http:// localhost:8080/MySite-Web/articles/testMe类型的URL,即任何没有文章扩展名的文件扩展名的路径.
我试过的弹簧贴图是.
@RequestMapping(value = "/articles/*")
public ModelAndView getArticles(HttpServletResponse response, HttpServletRequest request
) throws java.lang.Exception {
System.out.println("Handle any path prefixed with /articles/ ");
return null;
}
Run Code Online (Sandbox Code Playgroud)
在我的Spring配置中,我使用以下内容
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
Run Code Online (Sandbox Code Playgroud)
编辑:
这是Dispatcher Servlet映射
<servlet>
<description>
servlet</description>
<servlet-name>MySite</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:MySite-web-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
这是MySite-web.context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd …Run Code Online (Sandbox Code Playgroud) 结果列表很完美,但getResultSize()不正确.
我已经敲了一些代码来说明.
Criteria criteria2 = this.getSession().createCriteria(Film.class);
Criterion genre = Restrictions.eq("genreAlias.genreName", details.getSearch().getGenreName());
criteria2.createAlias("genres", "genreAlias", CriteriaSpecification.INNER_JOIN);
criteria2.add(genre);
criteria2.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStartResult());
FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.createFullTextEntityManager(entityManager);
org.apache.lucene.queryParser.QueryParser parser2 = new QueryParser("title", new StopAnalyzer() );
org.apache.lucene.search.Query luceneQuery2 = parser2.parse( "title:"+details.getSearch()");
FullTextQuery fullTextQuery = fullTextEntityManager.createFullTextQuery( luceneQuery2, Film.class);
fullTextQuery.setCriteriaQuery(criteria2);
fullTextQuery.getResultList()); // Returns the correctly filtered list
fullTextQuery.getResultSize()); // Returns the retsult size without the genre resrtiction
Run Code Online (Sandbox Code Playgroud) 我在java jsp设置上使用recaptcha.我在我的jsp中使用以下代码
<%@ page import="net.tanesha.recaptcha.ReCaptcha"%>
<%@ page import="net.tanesha.recaptcha.ReCaptchaFactory"%>
<%
ReCaptcha c = ReCaptchaFactory.newReCaptcha("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXX", false);
out.print(c.createRecaptchaHtml(null, null));
out.flush();
%>
Run Code Online (Sandbox Code Playgroud)
但是该网站使用https,因此我在IE上收到"仅显示安全内容"消息.
如果我查看源recaptcha已生成以下内容
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=XXXXXXXXXXXXXXXXXXXXXXX"></script>
Run Code Online (Sandbox Code Playgroud)
如何强制重新使用https而不是http?