Tag: orm

Kotlin与JPA / Hibernate:没有“开放”没有懒加载?

大多数Kotlin JPA示例代码看起来像这样 class Person(val name: String, val age: Int) { /* … */ } 甚至 data class Person(val name: String=””, val age: Int=0) { /* … */ } 现在,“ Hibernate用户指南”和其他几个ORM都指出,他们通常要创建代理或扩展模型类,但要允许在Kotlin中将类明确定义为open 。 这对于数据类来说目前是不可能的,从我自己的经验来看,大多数人在Kotlin编写JPA实体时并没有考虑这个问题。 所以,来我的问题(毕竟这是stackoverflow),是否足够 open class Person(val name: String, val age: Int) { /* … */ } 或者我们真的不得不这样做 open class Person(open val name: String, open val […]

数据库生成的属性不可用

我在一个基于Kotlin的项目中工作,它迫使我处理任何可能为null的属性。 在不受欢迎的情况下找出可能的空位是很好的; 但是我看到这么多了?. s和.!! s为数据库生成的属性,例如ID。 也许我在滥用这些运营商? 是否有任何约定标记属性不可空,但仍然有数据库生成值在这里? 如果我查找一个对象假设DB生成的值不再为空是安全的。 虚拟机可以被知道吗? 也许通过框架或语言提供的一些注释?

调用Rooms inMemoryBuilder方法时,Room Persistence Library运行时exception

当遵循设置Room持久性库的教程时,我在Android设备上测试时遇到此错误。 java.lang.RuntimeException:找不到PackageName .AppDatabase的实现。 AppDatabase_Impl不存在 我知道有一个类似的问题,但问题是由于kotlin gradle问题。 可能重复 测试课: @RunWith(AndroidJUnit4.class) public class LocalDatabaseTest { private PhotoDao mPhotoDao; private AppDatabase mDb; @Before public void createDb() { Context context = InstrumentationRegistry.getTargetContext(); mDb = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class).build(); mPhotoDao = mDb.photoDao(); } @After public void closeDb() throws IOException { //mDb.close(); } @Test public void testPreConditions() { assertNotNull(mDb); } 道: @Dao public […]

在Kotlin中带有不可变数据类的MyBatis

Kotlin有这个noarg插件来生成一个合成的noarg构造函数,而不需要帮助JPA(和像mybatis,hibernate这样的框架)实例化一个新的对象。 例如: data class User(val id: Int, val name: String) 鉴于这些属性被声明为val,即不可变,那么这些框架如何创建一个完全烘焙的对象与所有的值设置。 kotlin-noarg插件只是帮助实例化一个新的实例,但是属性(id和name)仍然是不可变的,因此一旦创建对象就不应该被允许改变。 要清楚的是,添加noarg插件后,情况会非常好。 问题是如何,鉴于属性是不变的。 这个问题也谈论这个解决方案,但不是如何部分。

将QueryRecyclerAdapter中的空结果返回

我正在使用QueryRecyclerAdapter在RecyclerView显示数据库请求结果。 我必须用Result<MyDTO>返回类型实现performQuery()方法。 当以前的条件,我知道,有空响应,但我不想产生异常,我必须返回空Result 。 但我不能通过构造函数明确地创建它 – 它不是public 。 所以,现在我返回与不正确的ID选择查询,这似乎不是很好的解决方案。 是否有另一种方法返回 Requery中的空结果 ?

指定索引(非唯一键)使用JPA

如何定义一个字段,例如使用JPA注释将email定义为索引。 我们在email上需要一个非唯一的密钥,因为每天在这个字段上有几百万个查询,而且没有密钥有点慢。 @Entity @Table(name="person", uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"})) public class Person { // Unique on code and uid public String code; public String uid; public String username; public String name; public String email; } 我已经看到一个冬眠特定的注释,但我试图避免供应商的具体解决方案,因为我们仍然决定休眠和数据核心之间。 更新: 从JPA 2.1开始,你可以做到这一点。 请参阅: 此位置不允许使用注释@Index

在ORM中保存第三方对象

我从REST api中获取对象,并使用第三方库(包含对象数据和用于这些对象的方法)处理这些对象。 我需要使用ORM保存对象(要管理许多对象),但不能添加注释以用于任何ORM。 可以扩展对象,但是我不能使用具有相同字段的其他类。 在android中如何在没有注解的情况下保持sqlite中的对象? 我可能扩展对象和覆盖字段添加注释? 我在同一个项目中使用kotlin和java开发。

调用Rooms inMemoryBuilder方法时,Room Persistence Library运行时异常

当遵循设置Room持久性库的教程时,我在Android设备上测试时遇到此错误。 java.lang.RuntimeException:找不到PackageName .AppDatabase的实现。 AppDatabase_Impl不存在 我知道有一个类似的问题,但问题是由于kotlin gradle问题。 可能重复 测试课: @RunWith(AndroidJUnit4.class) public class LocalDatabaseTest { private PhotoDao mPhotoDao; private AppDatabase mDb; @Before public void createDb() { Context context = InstrumentationRegistry.getTargetContext(); mDb = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class).build(); mPhotoDao = mDb.photoDao(); } @After public void closeDb() throws IOException { //mDb.close(); } @Test public void testPreConditions() { assertNotNull(mDb); } 道: @Dao public […]

请求和创建数据库从SQL转储:如何?

我试图用KOTLIN和SQLITE后端使用requery https://github.com/requery/requery库。 我有一个SQL转储,我想要在应用程序的第一次启动时写入到SQLite数据库,然后我想映射数据类到数据库实体与查询。 这里是创建表的数据源初始化: if (!(DataStorage.isDbInitialized(context))) { val db = writableDatabase val inputStream = context?.resources?.openRawResource(R.raw.dump) val reader = BufferedReader(InputStreamReader(inputStream)) val builder = StringBuilder() var line : String? var end = false while (!end) { line = reader.readLine() if(line == null) { end = true } else { builder.append(line) } } db.execSQL(builder.toString()) onCreate(db) DataStorage.setDbInitialized(context) } 我必须从SqlitexDatabaseSource和CommonDataSource派生这个类来与Kotlin一起使用。 […]

如何使用Vert.x Web获取当前的Web请求?

我正在写一个使用Hibernate(JPA)+ Vert.x Web(Kotlin)的项目,我需要将EntityManager绑定到Web Request,我的意思是我想要为每个Web请求创建EntityManager。 我需要使用静态方法(Kotlin中的对象)从VertX获得当前的Web请求。 有没有办法做到这一点? 或者我错了,因为VertX是反应?