我很困惑——我已经好几年没有使用过 Hibernate 了,然后就再也没有使用过 Spring Boot。Spring Boot,但从未与 Hibernate 或 JPA 一起使用。所以我试图弄清楚如何让它为我的工作工作 - 我应该在周一演示一些东西,如果我能让“这个”工作,我会将其复制到我的工作笔记本电脑上并更改当然是细节。顺便说一句 - 这是我收到的消息 - 我必须在标题中缩短它:
“类 org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider 未实现请求的接口 javax.persistence.spi.PersistenceProvider”
我有“主”类 - TestWebApplication:
package net.draconia.testWeb;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
@SpringBootApplication(scanBasePackages = {"com.draconia.testWeb.controller"})
public class TestWebApplication
{
@Bean
public DataSource getDatasource()
{
BasicDataSource objDatasource = new BasicDataSource();
objDatasource.setDriverClassName("com.mysql.jdbc.Driver");
objDatasource.setUrl("jdbc:mysql://localhost:3306/Test");
objDatasource.setUsername("root");
objDatasource.setPassword("R3g1n@ M1lL$ 1$ My Qu3eN!");
return(objDatasource);
}
@Bean
public …Run Code Online (Sandbox Code Playgroud) 最近,我将我的项目从Java 8升级到Java 10,并发出了很多警告,指出现在不推荐使用Observer和Observable。替换它们的建议是Flow API-问题是我尚未找到有关如何为Flow API编写代码的不错的教程。我发现的所有内容都说不能直接实现发布者/订阅者,而且我发现的许多内容都表明Flow API很大程度上基于多线程。
注意:我已经在StackOverflow以及Quora和其他一些站点上找到了这个答案,有人引用不能对Observable对象进行序列化,这在我为我的每个bean和许多bean实现Serializable时都完全不正确。我的其他类也是如此,甚至已经序列化以归档我的一些对象,并将它们从文件中读回到对象形式。
但是,多线程是一个问题-我不希望在响应模型对象的更改时使用流或多线程。问题1是-是否绝对需要使用Flow API,还是存在另一组不需要多线程和流的类/接口?
在查看Flow.publisher的javadocs时,我将用Observable替换-因为这是一个接口,这意味着我想我必须放入(类似于ListModel和TableModel类的实现)订阅者集合(类似于Observers?),并放置自定义代码以将其添加到我的发布商中或从中删除?问题2-我有权利吗?
问题3.)Flow.Publisher和Flow.Subscriber中的通用类型参数是什么?它显示了一个类型,但是我不知道在哪里使用该类型-我将在这里为我的一个模型类放置代码:
package net.draconia.frenchstudy.model;
import java.io.Serializable;
import java.util.concurrent.Flow.Publisher;
import java.util.concurrent.Flow.Subscriber;
public class Category implements Publisher<Category>, Serializable
{
private static final long serialVersionUID = 5281400324476454101L;
public static final Category EMPTY_CATEGORY = new Category();
private Integer miId;
private String msCategory;
public Category()
{ }
public Category(final int iId)
{
setId(iId);
}
public Category(final String sCategory)
{
setCategory(sCategory);
}
public Category(final int iId, final String sCategory)
{
setId(iId);
setCategory(sCategory);
}
public String getCategory()
{ …Run Code Online (Sandbox Code Playgroud)