Tag: ormlite

如何在ormlite中保存带有“外来对象”的对象

这是我的数据库: CREATE TABLE other ( id integer primary key autoincrement not null, texto text ); CREATE TABLE tabela (campoid INTEGER primary key autoincrement not null, camponome text not null, chave int, foreign key (chave) references other(id)); 这是我的课程: @DatabaseTable(tableName = “tabela”) public class Bean { @DatabaseField(columnName = “campoid”, generatedId = true) private int _id; @DatabaseField(columnName = […]

为什么ormlite有自己的注释?

从我在ormlite中看到的,它已经实现了它的注释以及JPA标准注释。 首先,设计一组新注释的原因是什么? 其次,如何使用@Entity等标准注释代替ormlite特定注释。 现在,我没有为这些实体定义错误。 我需要一个jar文件吗?

使用SQLite处理POJO的DAO创建的更好模式

我正在开发一个使用SQLCipher的Android应用程序, 用于Android的ORMLite处理与SQLite和Jackson进行解析的POJO存储。 我想知道是否会有一个更好的模式,我正在使用(由stayforit推荐)获得对应于给定的实体类的DAO。 我有超过30个实体类,我不断添加一些时间,每次,我必须创建一个看起来与前一个完全相同的DAO类。 我如何使用generics类进行推广? 这是我的DbManager类: public class DbManager { private static DbManager instance; private CipherDbHelper dbHelper; private SecureSharedPreferences settings; private DbManager() { } private DbManager(Context context, String password) { SQLiteDatabase.loadLibs(context); dbHelper = new CipherDbHelper(context, password); } public static void init(Context context, String password) { instance = new DbManager(context, password); } public static DbManager getInstance() […]

ORMLite – 强制读取对象具有相同的标识

我正在用ORMLite读取对象的层次结构。 它的形状像一棵树,父母的@ForeignCollection为0+孩子,每个孩子都用@DatabaseField(foreign=true)引用它的父。 我正在阅读并立即保存整个层次结构。 由于我是ORM的新手,也是ORMLite的新手,我不知道当读取数据库中具有相同ID的对象时,它们不会被创建为具有相同Identity 的实际相同的对象 ,但是有几个副本具有相同的ID 。 意思是,我现在面临的问题是(让我们说“ – >”代表“指代”)A – > B – > C!= C – > B – > A. 我想通过手动通过提供的DAO读取它们并通过它们的ID将它们放在一起来解决问题, 确保具有相同ID的对象具有相同的标识 。 是否有ORMLite本地解决方法? 如果是,那么它是什么,如果没有,解决这个问题的常用方法是什么? 这是ORM的一般问题吗? 它有名字(我想了解更多信息)吗? 编辑: 我的层次结构是这样一个建筑物包含几个楼层,每个楼层都知道它的建筑物,每个楼层包含几个区域,每个区域都知道它的楼层。

使用Foreign Collection Field创建表

我有这个抽象类: DomainItem abstract public class DomainItem { @DatabaseField(generatedId = true) protected long id; @ForeignCollectionField(eager = false) protected ForeignCollection contentItens; //getters and setters } ContentItem: abstract public class ContentItem { @DatabaseField(generatedId = true) protected long id; @DatabaseField(foreign = true) protected DomainItem domainItem; @DatabaseField() protected String content; //getters and setters } 这些(没有摘要): @DatabaseTable() public class PhytoterapicItem extends […]

ORMLite错误没有存在databasefield注释

运行我的Android应用程序时出现此错误: 没有字段在类[[Lmodel.Vak;]中有一个DatabaseField注释。 我的class级Vak有注释,所以我真的不明白为什么它仍然给我这个错误。 package model; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = “vak”) public class Vak { @DatabaseField(generatedId = true, columnName = “vakID”, id=true) Long id; @DatabaseField int rij; @DatabaseField int kolom; … } 我有一个名为Databasehelper.java的文件,其中扩展了OrmLiteSqLiteOpenHelper,文件如下所示: public class DatabaseHelper extends OrmLiteSqliteOpenHelper { // name of the database file for your application — change to something // appropriate […]

如何在ORMLite中指定对象自定义序列化?

我想将一些类型为ParentClass的字段作为json字符串存储到我的数据库中。 我不想使用Serializable接口和DataType.SERIALIZABLE,因为它与序列化类的完整类名绑定。 所以我使用以下代码: class ParentClass { @DatabaseField(persisterClass = MyFieldClassPersister.class) private MyFieldClass myField; } persister类的一种: public class MyFieldClassPersister extends StringType { private static final MyFieldClassPersister singleTon = new MyFieldClassPersister(); public static MyFieldClassPersister getSingleton() { return singleTon; } protected MyFieldClassPersister() { super(SqlType.STRING, new Class[0]); } @Override public Object parseDefaultString(FieldType fieldType, String defaultStr) { return jsonStringToObject(defaultStr); } @Override […]

ORMLITE是否支持SQL EXISTS?

我试图查询表如下 select * from client c where EXISTS (select * from visit v where c._id = v.client_id) 我可以用ORMLITE做到这一点吗?

使用ORMLite准备查询的SQLexception

我正在使用ORM(ORMlite),我的所有调用都进行得很顺利,直到我收到以下错误。 线程“main”中的exceptionorg.h2.jdbc.JdbcSQLException:SQL语句中的语法错误“SELECT * FROM”“STORIES”“WHERE”“TITLE”“=’Deepcut case leads’not following [*]””; SQL语句:SELECT * FROM Stories WHERE title =’Deepcut case leads’未在org.h2.message.DbException的org.h2.message.DbException.getJdbcSQLException(DbException.java:327)处跟随”[42000-152]。在org.h2.message.DbException.get(xbException.java:144)的org.h2.message.DbException.getSyntaxError(DbException.java:179)org.h2.command.Parser上获取(DbException.java:167)位于org.h2.engine的org.h2.engine.Session.prepareLocal(Session.java:426)的org.h2.command.Parser.prepareCommand(Parser.java:229)中的.getSyntaxError(Parser.java:480)。 Session.prepareCommand(Session.java:374)位于org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1093)org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:71)org.h2.jdbc。 JdbcConnection.prepareStatement(JdbcConnection.java:601)位于com.j256.ormlite.jdbc.JdbcDatabaseConnection.compileStatement(JdbcDatabaseConnection.java:83)的com.j256.ormlite.stmt.mapped.MappedPreparedStmt.compile(MappedPreparedStmt.java:44)在com.j256.ormlite.stmt.S tatementExecutor.buildIterator(StatementExecutor.java:169)at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:119)at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:189) 我很困惑,哪些是错的。 我从这些行调用搜索: // get our query builder from the DAO QueryBuilder queryBuilder = StoryDao.queryBuilder(); // the ‘title’ field must be equal to title (a variable) queryBuilder.where().eq(Story.TITLE_FIELD_NAME, title); // prepare our sql statement PreparedQuery […]

在Derby和Hsqldb中转义表和字段名称的问题

我的ORMLite包有问题。 当我为表生成模式时,我认为逃避所有实体名称是一个好习惯。 这将保护某些Java类或字段名称不是SQL保留字: CREATE TABLE “footable” (“stuff” VARCHAR(255)) 我现在正在添加“原始”查询支持,以便ORMLite可以帮助用户执行自己的查询。 但是,我发现使用Derby和Hsqldb时, 如果没有转义,则不能使用实体名称。 例如,以下查询: SELECT * FROM footable 生成以下错误: Derby: ERROR 42X05: Table/View ‘FOOTABLE’ does not exist. Hsqldb: Table not found in statement [select * from footable] 如果select表也被转义为”footable”它可以正常工作。 ORMLite支持的其他数据库可以在有或没有转义的情况下正常工作:MySQL,Postgres,Microsoft SQL Server,H2和Sqlite。 有没有更好的方法来逃避Derby和Hsqldb中的保留字? 关于如何以便携方式执行此操作的其他想法? 谢谢。