java – Hibernate SQLite没有创建数据库
发布时间:2020-05-24 03:05:28 所属栏目:Java 来源:互联网
导读:这是我的问题: 我有一个使用JavaFX Hibernate SQLite的桌面应用程序. 这是我的模特: @Entity@Table(name = usuario)public class Usuario implements AbstractModel, Serializable { @Id @GeneratedValue(strategy = GenerationTy
|
这是我的问题: 我有一个使用JavaFX Hibernate SQLite的桌面应用程序. @Entity
@Table(name = "usuario")
public class Usuario implements AbstractModel,Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@NotNull @Size(min=5,max=100)
private String username;
@NotNull @Size(min=5,max=100)
private String password;
@NotNull
private Boolean administrador;
@Version
private Integer version;
public Usuario() {
}
public Usuario(Integer id,String username,String password,Boolean admin,Integer version) {
this.id = id;
this.username = username;
this.password = password;
this.administrador = admin;
this.version = version;
}
@Override
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPasword(String password) {
this.password = password;
}
public Boolean getAdministrador() {
return administrador;
}
public void setAdministrador(Boolean administrador) {
this.administrador = administrador;
}
public Integer getVersion() {
return version;
}
这是我的persistence.xml <?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="PartyRockPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.gear7.partyrock.model.Usuario</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" />
<property name="javax.persistence.jdbc.url" value="jdbc:sqlite:party_rock.sqlite" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="br.com.gear7.partyrock.utils.SQLiteDialect"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
最后这是我的SQLiteDialect > package br.com.gear7.partyrock.utils;
/*
* The author disclaims copyright to this source code. In place of
* a legal notice,here is a blessing:
*
* May you do good and not evil.
* May you find forgiveness for yourself and forgive others.
* May you share freely,never taking more than you give.
*
*/
import java.sql.Types;
import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.Hibernate;
public class SQLiteDialect extends Dialect {
public SQLiteDialect() {
super();
registerColumnType(Types.BIT,"integer");
registerColumnType(Types.TINYINT,"tinyint");
registerColumnType(Types.SMALLINT,"smallint");
registerColumnType(Types.INTEGER,"integer");
registerColumnType(Types.BIGINT,"bigint");
registerColumnType(Types.FLOAT,"float");
registerColumnType(Types.REAL,"real");
registerColumnType(Types.DOUBLE,"double");
registerColumnType(Types.NUMERIC,"numeric");
registerColumnType(Types.DECIMAL,"decimal");
registerColumnType(Types.CHAR,"char");
registerColumnType(Types.VARCHAR,"varchar");
registerColumnType(Types.LONGVARCHAR,"longvarchar");
registerColumnType(Types.DATE,"date");
registerColumnType(Types.TIME,"time");
registerColumnType(Types.TIMESTAMP,"timestamp");
registerColumnType(Types.BINARY,"blob");
registerColumnType(Types.VARBINARY,"blob");
registerColumnType(Types.LONGVARBINARY,"blob");
// registerColumnType(Types.NULL,"null");
registerColumnType(Types.BLOB,"blob");
registerColumnType(Types.CLOB,"clob");
registerColumnType(Types.BOOLEAN,"integer");
registerFunction("concat",new VarArgsSQLFunction(org.hibernate.type.StandardBasicTypes.STRING,"","||",""));
registerFunction("mod",new SQLFunctionTemplate(org.hibernate.type.StandardBasicTypes.INTEGER,"?1 % ?2"));
registerFunction("substr",new StandardSQLFunction("substr",org.hibernate.type.StandardBasicTypes.STRING));
registerFunction("substring",org.hibernate.type.StandardBasicTypes.STRING));
}
public boolean supportsIdentityColumns() {
return true;
}
/*
public boolean supportsInsertSelectIdentity() {
return true; // As specify in NHibernate dialect
}
*/
public boolean hasDataTypeInIdentityColumn() {
return false; // As specify in NHibernate dialect
}
/*
public String appendIdentitySelectToInsert(String insertString) {
return new StringBuffer(insertString.length()+30). // As specify in NHibernate dialect
append(insertString).
append("; ").append(getIdentitySelectString()).
toString();
}
*/
public String getIdentityColumnString() {
// return "integer primary key autoincrement";
return "integer";
}
public String getIdentitySelectString() {
return "select last_insert_rowid()";
}
public boolean supportsLimit() {
return true;
}
public String getLimitString(String query,boolean hasOffset) {
return new StringBuffer(query.length() + 20).append(query).append(
hasOffset ? " limit ? offset ?" : " limit ?").toString();
}
public boolean supportsTemporaryTables() {
return true;
}
public String getCreateTemporaryTableString() {
return "create temporary table if not exists";
}
public boolean dropTemporaryTableAfterUse() {
return false;
}
public boolean supportsCurrentTimestampSelection() {
return true;
}
public boolean isCurrentTimestampSelectStringCallable() {
return false;
}
public String getCurrentTimestampSelectString() {
return "select current_timestamp";
}
public boolean supportsUnionAll() {
return true;
}
public boolean hasAlterTable() {
return false; // As specify in NHibernate dialect
}
public boolean dropConstraints() {
return false;
}
public String getAddColumnString() {
return "add column";
}
public String getForUpdateString() {
return "";
}
public boolean supportsOuterJoinForUpdate() {
return false;
}
public String getDropForeignKeyString() {
throw new UnsupportedOperationException(
"No drop foreign key syntax supported by SQLiteDialect");
}
public String getAddForeignKeyConstraintString(String constraintName,String[] foreignKey,String referencedTable,String[] primaryKey,boolean referencesPrimaryKey) {
throw new UnsupportedOperationException(
"No add foreign key syntax supported by SQLiteDialect");
}
public String getAddPrimaryKeyConstraintString(String constraintName) {
throw new UnsupportedOperationException(
"No add primary key syntax supported by SQLiteDialect");
}
public boolean supportsIfExistsBeforeTableName() {
return true;
}
public boolean supportsCascadeDelete() {
return false;
}
}
当我运行我的应用程序时,一切顺利但数据库文件没有被创建,这意味着我的表也没有被创建. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
