- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我很难使用 hibernate 连接到 Oracle 数据库。
我在该行遇到空指针异常
sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
这是 Eclipse 控制台记录的内容
Apr 11, 2018 11:05:05 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.6.Final}
Apr 11, 2018 11:05:05 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Apr 11, 2018 11:05:06 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Apr 11, 2018 11:05:06 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
The sessionFactory was not created. Could not connect to the database
Apr 11, 2018 11:05:06 PM org.hibernate.service.internal.AbstractServiceRegistryImpl stopService
INFO: HHH000369: Error stopping service [class org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl] : java.lang.NullPointerException
setup函数创建SessionFactory
public class DatabaseConnectionManager {
protected static SessionFactory sessionFactory;
protected static StandardServiceRegistry serviceRegistry;
/**
* Creates a sessionFactory instance and thus the connection to the database
*
*/
public void setup() {
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure( "hibernate.cfg.xml") // configures settings from hibernate.cfg.xml
.build();
try {
sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
} catch (Exception ex) {
System.out.println("The sessionFactory was not created. Could not connect to the database");
StandardServiceRegistryBuilder.destroy(registry);
}
if (sessionFactory != null)
System.out.println("Successfully connected to the database");
}
}
这是我的 POJO
@Entity
@Table(name = "denomination_inventory")
public class DenominationCount {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "C")
private int c;
@Column(name = "L")
private int l;
@Column(name = "XX")
private int xx;
@Column(name = "X")
private int x;
@Column(name = "V")
private int v;
@Column(name = "II")
private int ii;
@Column(name = "I")
private int i;
@Column(name = "DATE_TIME")
private LocalDateTime dateTime;
public DenominationCount() {
super();
}
/**
* Gets the entity's id
*
* @return an int representing the entity's id
*/
public int getId() {
return id;
}
/**
* Sets the entity's id
*
* @param id
* an int containing the entity's id
*/
public void setId(int id) {
this.id = id;
}
/**
* Gets the number of coins for the One Pound denomination
*
* @return an int representing the number of coins for the One Pound
* denomination
*/
public int getC() {
return c;
}
/**
* Sets the entity's number of coins for the One Pound denomination
*
* @param c
* an int containing the number of coins for the One Pound
* denomination
*/
public void setC(int c) {
this.c = c;
}
/**
* Gets the number of coins for the Fifty Pence denomination
*
* @return an int representing the number of coins for the Fifty Pence
* denomination
*/
public int getL() {
return l;
}
/**
* Sets the entity's number of coins for the Fifty Pence denomination
*
* @param c
* an int containing the number of coins for the Fifty Pence
* denomination
*/
public void setL(int l) {
this.l = l;
}
/**
* Gets the number of coins for the Twenty Pence denomination
*
* @return an int representing the number of coins for the Twenty Pence
* denomination
*/
public int getXX() {
return xx;
}
/**
* Sets the entity's number of coins for the Twenty Pence denomination
*
* @param c
* an int containing the number of coins for the Twenty Pence
* denomination
*/
public void setXX(int xx) {
this.xx = xx;
}
/**
* Gets the number of coins for the Ten Pence denomination
*
* @return an int representing the number of coins for the Ten Pence
* denomination
*/
public int getX() {
return x;
}
/**
* Sets the entity's number of coins for the Ten Pence denomination
*
* @param c
* an int containing the number of coins for the Ten Pence
* denomination
*/
public void setX(int x) {
this.x = x;
}
/**
* Gets the number of coins for the Five Pence denomination
*
* @return an int representing the number of coins for the Five Pence
* denomination
*/
public int getV() {
return v;
}
/**
* Sets the entity's number of coins for the Five Pence denomination
*
* @param c
* an int containing the number of coins for the Five Pence
* denomination
*/
public void setV(int v) {
this.v = v;
}
/**
* Gets the number of coins for the Two Pence denomination
*
* @return an int representing the number of coins for the Two Pence
* denomination
*/
public int getII() {
return ii;
}
/**
* Sets the entity's number of coins for the Two Pence denomination
*
* @param c
* an int containing the number of coins for the Two Pence
* denomination
*/
public void setII(int ii) {
this.ii = ii;
}
/**
* Gets the number of coins for the One Penny denomination
*
* @return an int representing the number of coins for the One Penny
* denomination
*/
public int getI() {
return i;
}
/**
* Sets the entity's number of coins for the One Penny denomination
*
* @param c
* an int containing the number of coins for the One Penny
* denomination
*/
public void setI(int i) {
this.i = i;
}
/**
* Gets the entity's time of insertion into the database
*
* @return a datetime representing the time when the entity was inserted into
* the database
*/
public LocalDateTime getDateTime() {
return dateTime;
}
/**
* Sets the entity's time of insertion into the database
*
* @param dateTime
* a datetime containing the time when the entity was inserted into
* the database
*/
public void setDateTime(LocalDateTime dateTime) {
this.dateTime = dateTime;
}
@Override
public String toString() {
return "DenominationCount [Id=" + id + ", 100=" + c + ", 50=" + l + ", 20=" + xx + ", 10=" + x + ", 5=" + v
+ ", 2=" + ii + ", 1=" + i + ", Data=" + dateTime + "]";
}
}
这是主文件(在 Controller 的构造函数中调用设置函数)
public class AppEngine {
public static void main(String[] args) throws InsufficientCoinageException {
CoinCountController controller = new CoinCountController();
}
}
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">cosmin</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.connection.release_mode">auto</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.connection.autoReconnect">true</property>
<mapping class="vmproj.model.entity.DenominationCount" />
</session-factory>
</hibernate-configuration>
如果我从配置文件中删除这一行
name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
(我也尝试过使用 SID 连接,但没有成功)
然后创建 SessionFactory 并建立连接,但仍然当我尝试将记录更新到数据库时
这是我的控制台显示的内容
Apr 11, 2018 11:20:20 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.6.Final}
Apr 11, 2018 11:20:20 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Apr 11, 2018 11:20:20 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Apr 11, 2018 11:20:21 PM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator initiateService
WARN: HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections
Apr 11, 2018 11:20:21 PM org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : The application must supply JDBC connections
Apr 11, 2018 11:20:21 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.OracleDialect
Apr 11, 2018 11:20:21 PM org.hibernate.dialect.Oracle9Dialect <init>
WARN: HHH000063: The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead
Apr 11, 2018 11:20:21 PM org.hibernate.dialect.OracleDialect <init>
WARN: HHH000064: The OracleDialect dialect has been deprecated; use Oracle8iDialect instead
Apr 11, 2018 11:20:21 PM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl makeLobCreatorBuilder
INFO: HHH000422: Disabling contextual LOB creation as connection was null
Successfully connected to the database
Exception in thread "main" java.lang.UnsupportedOperationException: The application must supply JDBC connections
at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:44)
at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:99)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:129)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:247)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:254)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:203)
at org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:56)
at org.hibernate.internal.AbstractSharedSessionContract.beginTransaction(AbstractSharedSessionContract.java:401)
编辑:
我添加了 printstacktrace,这就是问题
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [oracle.jdbc.driver.OracleDriver]
虽然我在 Maven 存储库中有 ojdbc8
最佳答案
我添加了旧版本的 ojdbc 驱动程序,现在它可以工作了。问题已解决
关于java - 连接oracle数据库时创建 session 工厂时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49783924/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!