小编Ant*_*nyF的帖子

具有继承的实体的JPA本机查询

我有一个实体类和一个基于该实体的子类:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class A
Run Code Online (Sandbox Code Playgroud)

@Entity
public class B extends A
Run Code Online (Sandbox Code Playgroud)

我需要发出一个仅在基类(A)上使用存储过程的本机查询.如果我尝试如下:

entityManager.createNativeQuery("select * from A a where procedure(f)",A.class).getResultList()
Run Code Online (Sandbox Code Playgroud)

我收到有关"在ResultSet中找不到列clazz_"的错误.我假设JPA提供程序添加此列以区分基类和扩展类.我可以通过显式添加clazz列和子类中的所有字段来解决此问题:

entityManager.createNativeQuery("select *,1 as clazz_,null as prop1,null as prop2 from A a where procedure(f)",A.class).getResultList()
Run Code Online (Sandbox Code Playgroud)

其中"prop1"和"prop2"是子类B的属性.但是,这似乎是一种不必要的破解,如果子类B发生变化,则容易出现维护问题.

我的问题是:如何在已定义继承的实体上使用存储过程进行查询?

java orm inheritance hibernate jpa

10
推荐指数
1
解决办法
1万
查看次数

特征和序列化/反序列化

假设我有两个特征,我想混合到一个班级.每个特征都实现了类所需的抽象方法.

trait Writable {
    def serialize(out: java.io.DataOutput)
}

trait T1 extends Writable

trait A extends T1 {
   val aNum: Int
   abstract override def serialize(out: java.io.DataOutput) = {
       super.serialize(out)
       println("A serialize")
       out.writeInt(aNum)
   }

   def action = println("A action")
}

trait B extends T1 {
   val bNum: Int
   abstract override def serialize(out: java.io.DataOutput) = {
       super.serialize(out)
       println("B serialize")
       out.writeInt(bNum)
   }

   def action = println("B action")
}

abstract class M[CT1 <: T1](val mNum: Int) extends Writable {
   this: M[CT1] with T1 =>
   def …
Run Code Online (Sandbox Code Playgroud)

serialization scala traits

6
推荐指数
1
解决办法
4206
查看次数

scala actor和持久化上下文

是否可以在每次动作时将持久化上下文注入scala actor?我有一个双Java/Scala spring应用程序,我使用spring注释将我的Java服务和方法标记为事务性.我想在我的scala actor中使用类似的功能.也就是说,演员应该在每次响应消息时在单个事务中操作.有没有人尝试类似的东西或有这样的事情的例子?

jpa scala

3
推荐指数
1
解决办法
480
查看次数

标签 统计

jpa ×2

scala ×2

hibernate ×1

inheritance ×1

java ×1

orm ×1

serialization ×1

traits ×1