- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于我有 4 个表:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class SourceEvent {
@Id
private Long id;
}
@Entity
@PrimaryKeyJoinColumn(name = "SOURCE_EVENT_ID")
public class PrimaryEvent extends SourceEvent {
@ManyToOne
private Account account;
}
@Entity
@PrimaryKeyJoinColumn(name = "SOURCE_EVENT_ID")
public class SecondaryEvent extends SourceEvent {
@ManyToOne
private Account account;
}
@Entity
public class Account {
@Id
private Long id;
@NaturalId
@Column(name = "ACCOUNT_NUMBER", unique = true, nullable = false)
private long accountNumber;
}
SourceEvent
是
PrimaryEvent
的父级和
SecondaryEvent
并且两个事件都指向
Account
.
SourceEvent
来自
Account
的帐号使用 JPA Criteria API。
final class Filter {
private Long accountNumber;
Specification<SourceEvent> toSpecification() {
return (Root<SourceEvent> root, CriteriaQuery query, CriteriaBuilder cb) -> {
return cb.or(
cb.equal(cb.treat(root, PrimaryEvent.class).get("account").get("accountNumber"), accountNumber),
cb.equal(cb.treat(root, SecondaryEvent.class).get("account").get("accountNumber"), accountNumber)
);
};
}
}
treat
运营商从
SourceEvent
向下转型至
PrimaryEvent
和
SecondaryEvent
我把两者都相等
Predicate
转至
cb.or(...)
sourceEventRepository.findAll(filter.toSpecification())
,
sourceEventRepository
是:
public interface SourceEventRepository extends JpaSpecificationExecutor<SourceEvent>, JpaRepository<SourceEvent, Long> {}
...
from
source_event sourceeven0_
inner join
primary_event sourceeven0_1_
on sourceeven0_.id=sourceeven0_1_.source_event_id
inner join
secondary_event sourceeven0_2_
on sourceeven0_.id=sourceeven0_2_.source_event_id
cross join
account account1_
where
sourceeven0_1_.account_id=account1_.id
and (
account1_.account_number=123
or account1_.account_number=123
)
SecondaryEvent
s 具有给定的帐号。
最佳答案
我们最近遇到了这个问题,并通过更改实体之一的变量名称找到了一种解决方法。
然后我们像向下转型一样强制左外连接。
根据您的用例:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class SourceEvent {
@Id
private Long id;
}
@Entity
@PrimaryKeyJoinColumn(name = "SOURCE_EVENT_ID")
public class PrimaryEvent extends SourceEvent {
@ManyToOne
private Account account;
}
@Entity
@PrimaryKeyJoinColumn(name = "SOURCE_EVENT_ID")
public class SecondaryEvent extends SourceEvent {
@ManyToOne
private Account account1;
}
@Entity
public class Account {
@Id
private Long id;
@NaturalId
@Column(name = "ACCOUNT_NUMBER", unique = true, nullable = false)
private long accountNumber;
final class Filter {
private Long accountNumber;
Specification<SourceEvent> toSpecification() {
return (Root<SourceEvent> root, CriteriaQuery query, CriteriaBuilder cb) -> {
Root<PrimaryEvent> primaryEventRoot = cb.treat(root, PrimaryEvent.class);
Join<PrimaryEvent, Account> primaryEvent = primaryEventRoot.join(PrimaryEvent_.account, JoinType.LEFT);
Root<SecondaryEvent> secondaryEventRoot = cb.treat(root, SecondaryEvent.class);
Join<SecondaryEvent, Account> secondaryEvent = secondaryEventRoot.join(SecondaryEvent_.account1, , JoinType.LEFT);
return cb.or(
cb.equal(primaryEvent.get("accountNumber"), accountNumber),
cb.equal(secondaryEvent.get("accountNumber"), accountNumber)
);
};
}
}
关于hibernate - JPA 标准 : downcast root to multiple entity subclasses and filter by the same linked entity natural id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991760/
我正在尝试向下转换我的数据库对象的函数。我得到: The method GetAsStringArray(HashMap) in the type dbObject is not applicable
给定以下代码: class Animal { } class Dog : Animal { } class Cage { private T animal; public Cage(T
我真的不知道这个问题的正确标题应该是什么,但是: 我有一个叫MyDiscriminatedUnion的歧视工会在 F# : type MyDiscriminatedUnion = | Foo of F
抱歉,我真的不知道如何为这个问题制作标题;也许我不知道我想做的事情有一个名称,但我可以用一些代码来解释它: 不幸的是,猜测您有一个类既没有复制构造函数也没有公共(public)静态复制方法。 clas
如果您在 Java 中实现了一个接口(interface),则没有什么可以阻止调用者查看您提供的具体实现,转换为该类并调用不在接口(interface)中的方法。我认为这被称为“恶意向下转换”。 防止
只是玩类型转换。假设,我们有 2 个类 public class Base { public int a; } public class Inh : Base { public int
我想调用一个函数指针,它本身将特征对象作为参数: fn invoke(x: &Fn(&WithFoo), y: &MyStruct) { // MyStruct implements With
我知道有人问了很多从 Cocoa 到 Swift 的向下转换问题,并且有一些错误,但是我已经尝试了很多在这里找到的方法,但我无法让它们工作,希望有人能伸出援手。 我是编程新手。我正在快速为 iOS 制
class MyCViewContollerClass:UIViewController{ var button = UIButton() } let storyBoard = UIStory
我有一个协议(protocol): protocol DatabaseProtocol { func getObjects(_: T.Type) -> [T] } 然后我实现这个协议(prot
我尝试以这种方式沮丧: public static void main(String[] args){ Animal a = new Animal(); ((Cat)a).makePe
对于事件 react 器和前导器中的超时,我使用了一个优先级队列,它还允许 O(log(n)) 随机访问删除事件(当事件发出信号/完成而不是发生超时时)。我存储 std::pair,其中 Timed
我有这个数组,我正在尝试将其 POST 到后端,但对所有的转换感到很困惑 valuesDictionary=["medication": Optional("Novocain"), "dateOfBi
我在某些设备上崩溃的代码片段如下: Crashed: com.apple.root.default-qos EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x00000
在使用 CoreData 时,我们需要访问可通过 AppDelegate 访问的共享存储。要获取对 AppDelegate 的引用,我们可以通过执行以下操作来获取它: guard let appDel
我仍在开发我的通用日志记录组件,它应该处理任何类型的 object 并将其转换(“序列化”)为字符串。 到目前为止工作得很好——除了一个要求:我应该能够识别给定对象的基类型(如果存在的话),并单独列出
这个问题的灵感来自评论 here . 考虑以下代码片段: struct X {}; // no virtual members struct Y : X {}; // may or may not h
将 pandas 数据帧(按列)从 float64 向下转换为 float32 会导致精度丢失,即使最大(9.761140e+02)和最小(0.000000e+00)元素适合 float32。 数据集
我不确定从父级向下转换为子级或从 A 创建 B (扩展 A)的最佳实践是什么. 作为一个例子,我有两个类: 父级: public class SoccerPlayer { private S
简单的问题 - 我正在执行以下操作: train_set = pd.read_csv('./input/train_1.csv').fillna(0) for col in train_set.col
我是一名优秀的程序员,十分优秀!