【问题标题】:How to create @Transient properties in JHipster?如何在 JHipster 中创建 @Transient 属性?
【发布时间】:2018-06-06 18:33:49
【问题描述】:

我正在考虑如何在 JHipster 中创建这样的 Proposal 对象:这样一个用户可以创建一个 Proposal 并且其他用户可以为它投票。

entity Proposal {
    proposalText String  minlength(2) maxlength(100) required
    proposalVotes Integer
}
entity Vote {
    numberOfPoints Integer
}
relationship ManyToOne {
    Vote{proposal(id) required} to Proposal{vote}
    Proposal{user(id) required} to User{proposal}
    Vote{user(id) required} to User{vote}
}

在 Spring 中,我将创建 @Transient proposalVotes Integer,控制器将查找 Proposal 拥有的所有投票并将它们加在一起以获得要发送到前端的结果。该属性不会存储在数据库中。

如果我使用 JHipster 并添加了一个 proposalVotes 属性,结果将保存在数据库中,并且可以在对话框中更改(...我不喜欢结果),所以我的问题是: 当您需要一个在每次调用他的对象时计算的属性时,JHipster 的最佳实践是什么?

如果比较熟悉的话,想想一个带有帖子的博客中的 cmets 的数量。

你在哪里计算结果:我会在 ProposalResource 中计算,但我不确定,我在示例中没有看到任何这样的用例,但它看起来很常见。

非常感谢

PD:如果 Github 中有任何示例,那就太好了!

【问题讨论】:

  • 有什么阻止您将此注释添加到生成的代码中吗?或者,您可以使用 DTO 和服务层。
  • 再次感谢 Gaël。是的,刚接触编程! ;-) 这就是为什么我问你,作为专家,你会怎么做?这是最佳做法吗?我想我将不得不修改一大堆东西。你知道我可以看看任何类似的例子吗?

标签: jhipster


【解决方案1】:

实际上,如果您使用 JDL(Jhipster 域语言)生成实体,那么您将无法选择创建字段 Transient,因为 JDL 是数据库设计机制,而 Transient 字段不会放置在 DB 中。

解决方案是将 JDL 导入我们的应用后,您可以在实体类中添加 Transient 字段。

【讨论】:

  • 你会怎么做?你知道我可以看看任何类似的例子吗?
  • 按照这个youtube.com/watch?v=fbEnchNPHSc 教程,其中12:15 时间他正在使用命令行创建一个新实体,然后在您的源代码中生成实体类,因此您可以在该类中创建瞬态字段(14:20 时间)。
  • 谢谢桑迪普。但是,该视频并未说明如何添加瞬态字段。
  • 是的,但我只是想通过该视频向您展示..您可以在哪里和哪个阶段创建瞬态字段...谢谢
  • 谢谢 Sandeep,但你不能在那里做。您必须创建所有内容,然后从 de IDE(域、资源等)更改内容,我真的无法弄清楚,究竟是如何。你知道什么,在哪里以及如何?你有什么代码可以看吗?再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2011-02-26
  • 2016-07-26
相关资源
最近更新 更多