mysql - Grails:我在哪里处理可以有两种不同表示的域类属性?
问题描述
我正在编写一种基于用户输入显示从 MySQL 数据库获得的产品的方法。我的产品有一个属性(大小),它可以由字符串、大小类型的对象(另一个包含三个浮点值的域类)表示,也可以一起丢失。目前,我的 Product-Class 对每个表示都有一个属性,这两个属性都可以为空。在我看来,我有一个特定的地方应该显示这个属性。现在我的问题是,我在哪里处理确定我对特定对象具有哪种表示的问题?
我可以在我的 gsp 模板中包含一个 if 条件,但这似乎是不好的做法。我将能够让执行查询的服务处理结果并构建单个大小属性以传递给模板,但这似乎也不正确。我的数据库设计有问题吗?我必须更改我的域模型吗?
对于这个非常笼统的问题,我很抱歉,一旦我知道我需要在哪里改变某些东西,我肯定可以改变它。已经非常感谢了!
解决方案
解决您的问题的一种方法是使用一个额外的临时字段,该字段将在您的视图中使用,但不会保留在您的数据库中。
class Product {
String sizeString
Size sizeSize
getSize() { sizeString ?: sizeSize.toString() }
static transients = ['size']
}
推荐阅读
- java - 为什么在评估调试对象时新的 FileInputStream 返回 null
- python - 根据第 0 个索引处的项目对 2D 嵌套列表进行排序
- java - 如何在 Java 中使用访问者模式模拟 Haskell 的模式匹配
- python - ValueError:error_score 必须是字符串“raise”或数值。(提示:如果使用“raise”,请确保拼写正确。)
- javascript - 如何在数组中找到对象?
- spring - Spring Boot + Apache CXF。仅发布带有注释的端点
- performance - 我们可以使用 Java 请求采样器进行大数据负载测试吗?
- node.js - 如何将 React App 客户端和 Node Server 部署到 cPanel
- celery - Celery:如何允许排队“重复”任务,但不允许处理“重复任务”?
- php - 从命令行跟踪 PHP 内存使用情况