我有一个实体类和一个基于该实体的子类:
@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发生变化,则容易出现维护问题.
我的问题是:如何在已定义继承的实体上使用存储过程进行查询?
假设我有两个特征,我想混合到一个班级.每个特征都实现了类所需的抽象方法.
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) 是否可以在每次动作时将持久化上下文注入scala actor?我有一个双Java/Scala spring应用程序,我使用spring注释将我的Java服务和方法标记为事务性.我想在我的scala actor中使用类似的功能.也就是说,演员应该在每次响应消息时在单个事务中操作.有没有人尝试类似的东西或有这样的事情的例子?