有时候我会把它们放在一起,有时候只有它们......有时候它们似乎也是这样.
有什么不同?
这是三个例子.他们有什么不同的做法?为什么我不能只为所有这些使用@GeneratedValue?
例1
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
Long id;
Run Code Online (Sandbox Code Playgroud)
例2
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
private int userId;
Run Code Online (Sandbox Code Playgroud)
例3
@ElementCollection
@JoinTable(name="Address",
joinColumns=@JoinColumn(name="user_id")
)
@GenericGenerator(name="hilo-gen", strategy="hilo")
@CollectionId(columns = @Column(name="Address_id"), generator = "hilo-gen", type = @Type(type="long"))
Collection<Addr> listOfAddresses = new ArrayList<Addr>();
Run Code Online (Sandbox Code Playgroud) 如何限制JPQL命名查询的选择查询?我需要在查询级别本身而不是在java层中完成限制!我正在尝试使用
@NamedQueries(value = {
@NamedQuery(name = UserNotification.QueryName.NOTIFICATION_DISPLAYED,
query = "SELECT un FROM UserNotification un " +
"WHERE un.orgId IN (:orgList) " +
"AND un.user.id = :userId LIMIT 5")
Run Code Online (Sandbox Code Playgroud)
但是徒劳!
请建议
我正在使用毫秒进行Java中的日期计算,并注意到以下问题:
private static final int MILLIS_IN_SECOND = 1000;
private static final int SECONDS_IN_MINUTE = 60;
private static final int MINUTES_IN_HOUR = 60;
private static final int HOURS_IN_DAY = 24;
private static final int DAYS_IN_YEAR = 365; //I know this value is more like 365.24...
private static final long MILLISECONDS_IN_YEAR = MILLIS_IN_SECOND * SECONDS_IN_MINUTE * MINUTES_IN_HOUR * HOURS_IN_DAY * DAYS_IN_YEAR;
System.out.println(MILLISECONDS_IN_YEAR); //Returns 1471228928
Run Code Online (Sandbox Code Playgroud)
我知道1年大约是= 31,556,952,000毫秒,所以我的乘法不知何故.
谁能指出我做错了什么?我应该用多久?
可以在另一个查询的结果集上选择HQL吗?
例如:
SELECT COUNT(*) FROM (SELECT * FROM Table)
Run Code Online (Sandbox Code Playgroud)
我可以在SQL中做到这一点,但是当我在HQL中尝试上面但它只是向我显示语法错误"意外令牌:(靠近第1行,第22列......"
我创建了自己的注释,我通过反射在我的代码中做出决定.注释具有为其唯一元素设置的默认值.有没有办法可以通过反射访问默认值?
PageableRequestMapping.java(注释)
package org.tothought.controllers.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface PageableRequestMapping {
String variablePath() default "/";
}
Run Code Online (Sandbox Code Playgroud)
Psuedo代码检索默认值
private int parsePageNumber(StringBuffer requestURL,
PageableRequestMapping pageableRequestMapping) {
String variablePath = pageableRequestMapping.variablePath();
//Psuedo code doesn't work in Java, included to illustrate intentions
if(variablePath.equalsIgnoreCase(pageableRequestMapping.variablePath().default())){
//handle default case
}else{
//handle different case
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我对这个问题的研究没有任何例子.我理论上这个值可以通过类以静态方式访问,但它不能.所以我有两个问题.
此外,我知道我可以硬编码这个值,但是我想让程序稍微强一些.
在使用Tomcat作为应用程序服务器设置Java Web应用程序时,我常常对库何时可用感到困惑.通过对Stack Overflow的一些讨论,我了解到一些库(.jar)文件在运行时可用,而其他文件在编译时可用.通常我会得到错误并通过反复试验解决它们,将jar文件放在不同的目录中,直到应用程序运行或编译.最近向我指出,您可以通过WEB-INF/lib文件夹在运行时使.jar库可用.我开始考虑这个并提出一些问题.我过去已经阅读了这个主题,并没有找到将信息放入我容易理解和保留的上下文中的来源.
是否有可以为项目设置的编译时类路径和运行时类路径?
一个.classpath甚至是讨论运行时可用库的适用术语吗?
WEB-INF/lib是在运行时使库可用的唯一方法吗?Tomcat中的lib文件夹在运行时可以使用吗?
这与类加载器有什么关系?我知道创建了类加载器的层次结构.这些是严格用于运行时操作吗?
我有一个实现静态方法的类学生
public static Comparator<Student> getCompByName()
Run Code Online (Sandbox Code Playgroud)
返回Student的新比较器对象,通过属性"name"比较2个Students对象.
我现在需要使用我的函数getCompByName()通过'name'对学生ArrayList进行排序来测试它.
这是我的Student课程中的Comparator方法.
public static Comparator<Student> getCompByName()
{
Comparator comp = new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2)
{
return s1.name.compareTo(s2.name);
}
};
return comp;
}
Run Code Online (Sandbox Code Playgroud)
而主要我需要测试的地方
public static void main(String[] args)
{
// TODO code application logic here
//--------Student Class Test-------------------------------------------
ArrayList<Student> students = new ArrayList();
Student s1 = new Student("Mike");
Student s2 = new Student("Hector");
Student s3 = new Student("Reggie");
Student s4 = new Student("zark");
students.add(s1);
students.add(s2);
students.add(s3);
students.add(S4);
//Use getCompByName() …
Run Code Online (Sandbox Code Playgroud) 我想使用rowspan(html的属性)<style>
,如:
<style>
table td{
rowspan: 2;
}
</style>
Run Code Online (Sandbox Code Playgroud)
无论如何要做到这一点,还是有什么可以解决的?感谢任何建议!
在JSTL中有两种打印输出的方法 -
<H1><c:out value="${theOutput}" /></H1>
和
<H1>${theOutput}</H1>
有什么不同?哪一个是首选方式?
谢谢.
我已经设置了一个Tomcat 7.0应用程序服务器,通过SSL进行相互(客户端/服务器)身份验证.要设置此配置,我需要在我的Web浏览器中为服务器和.pks证书创建.jks文件.在Tomcat中配置server.xml文件后,我有相互身份验证和SSL工作.现在我试图在servlet中获取证书,但是我似乎无法从servlet中的请求中获取证书.我可以设置一个成功从请求中提取证书的过滤器.任何人都可以为我提供一个配置/代码,允许我从servlet获取证书吗?我也接受了为什么我无法在servlet中获取证书的原因.
在server.xml
<Connector
clientAuth="true" port="8443" protocol="HTTP/1.1" SSLEnabled="true"
scheme="https" secure="true"
keystoreFile="C:/Users/Kevin Bowersox/Desktop/Development/My Certs/server.jks"
keystoreType="JKS" keystorePass="notmypassword"
truststoreFile="C:/Users/Kevin Bowersox/Desktop/Development/My Certs/server.jks"
truststoreType="JKS" truststorePass="notmypassword"
SSLVerifyClient="require" SSLVerifyDepth="2" sslProtocol="TLS"
/>
Run Code Online (Sandbox Code Playgroud)
MyServlet.java - 这会抛出RuntimeException,因为在访问url时找不到证书:https:// localhost:8443/Sample_Application/MyServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
if (null != certs && certs.length > 0) {
System.out.println("cert found");
}
throw new RuntimeException("No X.509 client certificate found in request");
}
Run Code Online (Sandbox Code Playgroud)
MyServlet Mapping
<servlet>
<description>
</description>
<display-name>MyServlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
MyFilter.java …