将JPA 2与EclipseLink实现一起使用.
我正在尝试构建一个动态查询,它应该会在给定日期之后保留一些记录.
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Event> criteria = builder.createQuery(Event.class);
Root<Event> root = criteria.from(Event.class);
criteria.select(root);
criteria.distinct(true);
List<Predicate> predicates = new ArrayList<Predicate>();
//...
if (dateLimit != null){
ParameterExpression<Date> param = builder.parameter(Date.class, "dateLimit");
predicates.add(builder.lessThanOrEqualTo(root.get("dateCreated"), param));
}
Run Code Online (Sandbox Code Playgroud)
lessThanOrEqualTo()并且le()是仅有的两个方法,在API中看起来像可以帮助我在这种情况下.这个警告是由日食引发的:
Bound mismatch: The generic method lessThanOrEqualTo(Expression<? extends Y>, Expression<? extends Y>)
of type CriteriaBuilder is not applicable for the arguments (Path<Object>, ParameterExpression<Date>).
The inferred type Object is not a valid substitute for the bounded parameter
<Y extends Comparable<? super Y>>
Run Code Online (Sandbox Code Playgroud)
我可以想象我没有采取正确的方法解决这个问题,但我无法找到任何可能解决方案的提示或指示.
我正在尝试实现一个复合组件,该组件以纯文本显示用户的信息详细信息,或者如果所需的详细信息是当前连接的用户的详细信息,则通过可编辑的输入文本字段显示它们.
我知道al UI Components可以通过渲染属性渲染,但是那些不是UI组件的东西(例如div)
<div class = "userDetails" rendered = "#{cc.attrs.value.id != sessionController.authUser.id}">
Name: #{cc.attrs.value.name}
Details: #{cc.attrs.value.details}
</div>
<div class = "userDetails" rendered = "#{cc.attrs.value.id == sessionController.authUser.id}">
<h:form>
...
</h:form>
</div>
Run Code Online (Sandbox Code Playgroud)
我知道div没有渲染属性,可能我根本没有采用正确的方法.我可以很容易地使用JSTL标签,但我想避免这种情况.
我正在使用JSF 2.0和GlassFish 3.0.
我有以下Managed Bean:
@ManagedBean
@RequestScoped
public class OverviewController{
private List<Event> eventList;
@PostConstruct
public void init(){
System.out.println("=> OverviewController - init() - enter");
System.out.println("=< OverviewController - init() - exit");
}
}
Run Code Online (Sandbox Code Playgroud)
在overview.xhtml文件中,我从OverviewController中调用了不同的属性或方法.
<ui:repeat var="event" value="#{overviewController.eventList}">
...
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
一切正常,但问题出在日志文件中:
INFO: Enter : RESTORE_VIEW 1
INFO: Exit : RESTORE_VIEW 1
INFO: Enter : RENDER_RESPONSE 6
INFO: => OverviewController - init() - enter
INFO: => Overview Controller - updateSelectedTab() - enter
INFO: =< Overview Controller - updateSelectedTab() - exit
INFO: =< …Run Code Online (Sandbox Code Playgroud) 我正在使用JPA2和EclipseLink实现.我只是想将当前Date保存到DateTime列到MySQL数据库中.
应该持久化的日期对象只是创建:
import java.util.Date
Date currentDate = new Date();
Run Code Online (Sandbox Code Playgroud)
现在currentDate包含确切的日期和时间.此对象持久存在于具有以下列的表中:
@Column(name="DATE_CREATED")
@Temporal(TemporalType.DATE)
Date dateCreated;
Run Code Online (Sandbox Code Playgroud)
将TemporalType有三个常量:
DATE- 这将DB保存在没有任何时间的日期:(2012-02-23 00:00:00)TIME - 这会引发不兼容错误TIMESTAMP- 这将DB保存在没有任何时间的日期:(2012-02-23 00:00:00)数据库列以这种方式创建:
date_opening DATETIME NULL DEFAULT NULL,
对于所有这些选项,我无法保存时间和日期.
我正在使用JPA2和EclipseLink实现
![简单的桌面结构] [1]
以下是我尝试映射的两个表和JPA注释.
public class Story implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
Integer id;
@Temporal(TemporalType.TIMESTAMP)
@Column (name="DATE_CREATED")
Date dateCreated;
String title;
String description;
@Column(name="AUTHOR_ID")
Integer authorId;
@Column(name="COUNTRY_ID")
Integer countryId;
private String reviews;
@OneToMany(mappedBy = "story", cascade=CascadeType.ALL)
private List<Tip> tipList;
}
public class Tip implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
private String description;
private Integer vote;
@ManyToOne (cascade=CascadeType.ALL)
@JoinColumn(name="STORY_ID", referencedColumnName="ID")
private Story story;
}
Run Code Online (Sandbox Code Playgroud)
作为一个简单的例子,我想在同一个交易中坚持一个故事和一些故事相关的提示.以下是执行此操作的代码部分:
Story newStory = new Story(title, body, ...);
EntityTransaction transaction = em.getTransaction().begin();
boolean …Run Code Online (Sandbox Code Playgroud) 我正在尝试显示一些照片.所有这些都具有相同的宽度但不同的高度.我正在尝试做类似的事情:
每张图片的类名都是pic
<img class = "pic" src = .... />
Run Code Online (Sandbox Code Playgroud)
在样式表中我指定了float:left属性:
.pic{
float:left
}
Run Code Online (Sandbox Code Playgroud)
最终结果不是预期的结果,而每行在前一行的最高div之后垂直对齐: 
有没有办法在纯交叉浏览器CSS中解决我的问题?
我知道这篇文章,我仔细检查了那里的所有可能性.
我在Glassfish 3上使用JSF 2.0和Mojarra实现.
我正在尝试使用两个简单的<h:commandLink>标签来更改应用程序语言.这是.xhtml页面:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>
<h:outputText value = "#{appMessage['page.welcome']}" />
</title>
<f:metadata>
<f:event type = "preRenderView" listener = "#{sessionController.changeLanguage}" />
</f:metadata>
</h:head>
<h:body>
<h1><h:outputText value = "#{appMessage['text.slide.welcome']}" /></h1>
<h:form id = "fm-language">
<h:commandLink action = "#{sessionController.changeLanguage('en')}" value = "#{appMessage['link.english']}" />
<h:commandLink action = "#{sessionController.changeLanguage('de')}" value = "#{appMessage['link.german']}" />
</h:form>
</h:body>
Run Code Online (Sandbox Code Playgroud)
这是HTML代码:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>The Maze Project</title>
</head>
<body>
<h1>Welcome</h1>
<form id="fm-language" …Run Code Online (Sandbox Code Playgroud) 我有以下设置:
@Entity
@IdClass(MemberAttributePk.class)
public class MemberAttribute {
@Id
@ManyToOne @JoinColumn(name="member_id")
protected Member member;
@Id
protected String name;
private String value;
public MemberAttribute() {}
// get & set
}
Run Code Online (Sandbox Code Playgroud)
和id类:
public class MemberAttributePk implements Serializable {
protected Member member;
protected String name;
public MemberAttributePk() {}
// get & set
}
Run Code Online (Sandbox Code Playgroud)
我为以下内容定义了一个简单的Spring Data存储库MemberAttribute:
@Repository
public interface MemberAttributeRepo extends JpaRepository<MemberAttribute, MemberAttributePk> {
}
Run Code Online (Sandbox Code Playgroud)
现在,我想要做的就是将成员属性保存到数据库:
public void saveAttribute(Member member, String name, String value) {
MemberAttribute attr = new MemberAttribute(member, name, value);
attributeRepo.save(attr); …Run Code Online (Sandbox Code Playgroud) 我正在AWS上部署我的第一个应用程序,有几件事我找不到解决方案.
1. 文件系统
该应用程序使用Lucene并允许图像上传,因此我猜我需要一个S3实例来托管Lucene索引和图像.
出于测试目的,在我的本地系统上,我会将这行代码放在Tomcat 7中server.xml:
<Context path="/uploads" docBase="D:/myapp/uploads" />.现在,正如您可能知道的那样,所有以请求开头的请求/uploads都D:/myapp/uploads将由服务器路由到.
此外,Lucene API需要一个绝对路径才能找到索引目录:
FSDirectory.open(new File(ConfigUtil.getProperty("D:/myapp/index")))
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是关于AWS控制台中的此配置.我怎样才能获得那些'D:/ aaa/bbb /'路径?
2. 电子邮件系统
注册后,会向用户发送确认电子邮件.再次,在测试中我使用了Google的smtp.gmail.com.我需要一个主机一个用户名和密码,使javax.mail API的工作.
我不知道如何获得这些凭据?是AWS事务还是域名注册商(我正在使用namecheap)问题.
谢谢你的帮助!
在我的应用程序中,我有一个自己开发的框架,它将所有请求映射到一个中央 ControllerServlet(没什么特别的,它具有几乎所有框架的基本功能)。我必须实现发布者-订阅者消息交换功能,并且我决定使用 Servlet 3.0 的异步方法。
当前ControllerServlet和AuthenticationFilter未设置为 asyncSupported。我可以为所有异步处理实现第二个 CotrollerServlet,也可以将现有的 ControllerServlet 声明为asyncSupported=true(即使存在不需要异步处理的请求)。
...对于使用异步功能的应用程序,整个请求处理链必须通过注解或其部署描述符设置此属性... - 源
从这里我明白我必须声明AuthenticationFilter为asyncSupported=true(并且在某些情况下不需要异步)。
声明 servlet 和过滤器是否有任何缺点,asyncSupported=true即使它们也映射不需要异步处理的请求?会不会有任何可扩展性问题?
由于不同的原因,我必须使用最新版本的 Lucene 的 API。
API 还没有很好的文档记录,所以我发现自己无法执行一个简单的 addDocument()
下面是Writer初始化:
analyzer = new StopAnalyzer(Version.LUCENE_40);
config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
writer = new IndexWriter(FSDirectory.open(new File(ConfigUtil.getProperty("lucene.directory"))), config);
Run Code Online (Sandbox Code Playgroud)
简单的toDocument方法:
public static Document getDocument(User user) {
Document doc = new Document();
FieldType storedType = new FieldType();
storedType.setStored(true);
storedType.setTokenized(false);
// Store user data
doc.add(new Field(USER_ID, user.getId().toString(), storedType));
doc.add(new Field(USER_NAME, user.getFirstName() + user.getLastName(), storedType));
FieldType unstoredType = new FieldType();
unstoredType.setStored(false);
unstoredType.setTokenized(true);
// Analyze Location
String tokens = "";
if (user.getLocation() != null && ! …Run Code Online (Sandbox Code Playgroud) I'm trying to deploy a web app to tomcat using ANT but I ran into this error (the app compiles fine in a simple ant task. The issue occurs when Tomcat is restarted):
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 24 more
Run Code Online (Sandbox Code Playgroud)
I red a couple of answers around here which state that besides slf4j an implementation such as log4j. This is an excerpt of the build.xml file:
<pathelement location="${slf4j-api-1.7.2.jar}"/>
<pathelement location="${log4j.jar}"/>
Run Code Online (Sandbox Code Playgroud)
These are path elements …
在JSP和JSTL中,我会正常地做这样的事情:
<c:forEach items="${userList}" var = "user">
<div id = "user-block">
<h1>${user.name}</h1>
<div id = "user-description">
<p>${user.description}</p>
</div>
<ul>
<li> Age: ${user.age} </li>
<li> City: ${user.city} </li>
<li> Country: ${user.country} </li>
</ul>
</div>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我试图使用Facelet复合组件获得相同的结果:
<cc:interface>
<cc:attribute name="value" type="java.util.List" required="true" shortDescription="The list of objects that should be displayed"/>
</cc:interface>
<cc:implementation>
<div class = "event-block">
</div>
</cc:implementation>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何迭代#{cc.attrs.value}中的对象.
LE: 我想知道是否有办法在不使用JSP或JSTL的情况下解决这个问题
java ×8
jsf ×3
jsf-2 ×3
html ×2
jpa-2.0 ×2
amazon-s3 ×1
ant ×1
asynchronous ×1
commandlink ×1
criteria-api ×1
css ×1
css-float ×1
date ×1
datetime ×1
facelets ×1
hibernate ×1
javascript ×1
jpa ×1
logging ×1
lucene ×1
mojarra ×1
servlet-3.0 ×1
slf4j ×1
spring ×1
spring-data ×1
tomcat ×1
undefined ×1