声明使用输入参数属性作为查询参数的Spring数据JPA查询的最简单方法是什么?
例如,假设我有一个实体类:
public class Person {
@Id
private long id;
@Column
private String forename;
@Column
private String surname;
}
Run Code Online (Sandbox Code Playgroud)
和另一课:
public class Name {
private String forename;
private String surname;
[constructor and getters]
}
Run Code Online (Sandbox Code Playgroud)
...然后我想编写一个Spring数据存储库,如下所示:
public interface PersonRepository extends CrudRepository<Person, Long> {
@Query("select p from Person p where p.forename = ?1.forename and p.surname = ?1.surname")
findByName(Name name);
}
Run Code Online (Sandbox Code Playgroud)
...但是Spring数据/ JPA不喜欢我在?1
参数上指定属性名称.
什么是最好的选择?}
我有一个对象列表,我需要转换为一个映射,其中键是每个元素的函数,值是每个元素的另一个函数的列表.实际上,这是通过它们的功能对元素进行分组.
例如,假设一个简单的元素类:
class Element {
int f1() { ... }
String f2() { ... }
}
Run Code Online (Sandbox Code Playgroud)
以及这些的清单:
[
{ f1=100, f2="Alice" },
{ f1=200, f2="Bob" },
{ f1=100, f2="Charles" },
{ f1=300, f2="Dave" }
]
Run Code Online (Sandbox Code Playgroud)
那我想要一张地图如下:
{
{key=100, value=[ "Alice", "Charles" ]},
{key=200, value=[ "Bob" ]},
{key=300, value=[ "Dave" ]}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一种简洁的方式在Java中执行此操作而不进行迭代吗?LambdaJ的group
方法与Guava的组合Maps.transform
几乎可以实现,但group
不生成地图.
我得到了不变性的概念,以及为什么让DTO不可变是一个好主意.
我还注意到Java有一个@Immutable
注释,我们可以使用它来注释不可变类.
我的问题是:注释Java类@Immutable
给我们带来了什么?是否有任何库功能仅适用于以这种方式注释的类?
我想将Java 8方法引用声明为Spring bean.在Spring XML文件中执行此操作的最简单方法是什么?
例如,假设我有:
class Foo {
Foo(ToLongFunction<Bar> fn) { ... }
}
class Bar {
long getSize() { ... }
}
Run Code Online (Sandbox Code Playgroud)
...我想创建一个Foo
将方法引用Bar::getSize
作为构造函数参数.
如何Foo
在Spring bean XML文件中声明实例?
我有一个TempFile
zip文件的对象,我想从中读取如下:
Zip::ZipFile.open_buffer(tempfile) do |zipfile|
...
end
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到以下错误:
Zip::ZipFile.open_buffer expects an argument of class String or IO. Found: Tempfile
Run Code Online (Sandbox Code Playgroud)
我也试过了
Zip::ZipFile.open(tempfile.path) do |zipfile|
...
end
Run Code Online (Sandbox Code Playgroud)
但那会回来
can't dup NilClass
Run Code Online (Sandbox Code Playgroud)
如何处理临时zip文件?
有没有一种优雅的方式使用Guava从选项列表转换为现值列表?
例如,从
ImmutableList.of(
Optional.of("Tom"), Optional.<String>absent(), Optional.of("Dick"),
Optional.of("Harry"), Optional.<String>absent()
)
Run Code Online (Sandbox Code Playgroud)
到一个只包含的列表
["Tom", "Dick", "Harry"]
Run Code Online (Sandbox Code Playgroud)
一种方法是:
List<T> filterPresent(List<Optional<T>> inputs) {
return FluentIterable.from(inputs)
.filter(new Predicate<Optional<T>>() {
@Override
public boolean apply(Optional<T> optional) {
return optional.isPresent();
}
}).transform(new Function<Optional<T>, T>() {
@Override
public T apply(Optional<T> optional) {
return optional.get();
}
}).toList();
}
Run Code Online (Sandbox Code Playgroud)
但这很冗长.
遗憾的是,Java 8不是一个选项.
我无法连接到数据库.我的凭据是正确的.我能够使用Oracle SQL Developer进行连接.我收到以下错误.任何帮助将不胜感激.
> INFO: Loaded JDBC driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
Jul 24, 2012 2:38:39 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet dispatcher threw exception
java.sql.SQLException: No suitable driver found for jdbc:mysql://XX.1.1.XX:3306/dashboard
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:381)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:455)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:463)
at com.mvc.services.TransactionInfoService.getData(TransactionInfoService.java:39)
at com.mvc.controllers.MainController.handleRequestInternal(MainController.java:29)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) …
Run Code Online (Sandbox Code Playgroud) java ×5
spring ×3
guava ×2
annotations ×1
collections ×1
concurrency ×1
immutability ×1
java-8 ×1
jdbc ×1
jpa ×1
lambda ×1
lambdaj ×1
mysql ×1
ruby ×1
spring-data ×1
spring-mvc ×1
zip ×1