我正在尝试使用具有命名作用域的类的继承:
Class A < ActiveRecord::Base
scope :useful_scope, lambda { |value1, value2|
where(:value1 => value1, :value2 => value2)
end
end
Class B < A
set_table_name "b"
end
我遇到的问题是sql查询中的表名仍引用A类表:
A.useful_scope("alpha", "beta").to_sql
=> "SELECT \"a\".* FROM \"a\" WHERE \"a\".\"value1\" = 'alpha' AND \"a\".\"value2\" = 'beta'"
B.useful_scope("alpha", "beta").to_sql
=> "SELECT \"b\".* FROM \"b\" WHERE \"a\".\"value1\" = 'alpha' AND \"a\".\"value2\" = 'beta'"
请注意,WHERE语句中的表名仍然引用A。我正在修改一个现有的gem,它在整个A类范围内具有各种依赖性,因此我需要保持其当前语法。我想在WHERE子句SQL中维护表名称说明符,以确保在与其他命名作用域定义嵌套时作用域表现良好。
我尝试了以下方法:
有没有一种方法可以强制在每个继承的类上对范围进行评估,以便不将其显式映射到父类表?
我最终使用了匿名作用域来解决此问题。代码如下:
def self.useful_scope(value1, value2)
scoped(:conditions => { :value1 => value1, :value2 => value2 })
end
现在,这将在父类和继承的类中正确评估,并保留所需的作用域行为。
我有一个BaseEntity,当我像这样制作mapper时,它有一个名为Customer的子级: Mapstruct不会自动映射BaseEntity字段。你能告诉我怎么做吗?
我有一个用JPA映射的简单类: 我把那门课扩展成了非常简单的课 这正是我对SponsorDefainableBo所需要的。它是Sponsor的副本,并且从与Sponsor相同的表中读取。这是我们通过一些xml文档控制的查询框架所需要的,并且需要成为我正在做的事情的单独对象。需要SponsorDefainableBo插入查询/维护框架以进行我们不想在主父文档中进行的自定义详细信息。当我尝试使用Spo
我的域名: 我的DTO: 我的地图绘制程序如下所示: 但是,我得到了以下错误: 目标名称“Framework.system”的类型Framework中的未知属性“system”。你是说“框架外部化”吗?目标名称为“Framework.availability”的Framework类型中的未知属性“availability”。你是说“框架外部化”吗?
1. 前言 本节课程和大家一起学习继承映射。通过本节课程的学习,你将了解到: 什么是继承映射; 实现继承映射的 3 种方案。 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射? 继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。 为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该
问题内容: 目前,我有这样的结构: 它使用联接表与每个子类一个表映射。由于历史原因,我也使用了一个鉴别器,因此当前情况如《 Hibernate手册》第9.1.3节所述 。 问题: 如何为这样的结构扩展映射: 我可以在hibernate映射中吗?什么我需要S’ 问题答案: 未测试, 但根据发布的链接(如果您使用的是hibernate3)
问题内容: 我正在寻找一种奇妙的方式来防止闭合继承周围的scrope。例如: 我知道只有 两种方法可以 防止共享范围: (1)使用阴影变量: (2)将函数体放在其他位置: 我的问题是-有人知道防止闭包继承JS范围的第三种方法吗?花哨的东西很好。 我认为唯一可行的方法是在Node.js中。 让我们利用想象力来思考一下,并假设JS有一个private关键字,这意味着变量仅在该函数的作用域内是私有的,如