Hibernate – 保存方法的返回值而不是字段

huangapple 未分类评论74阅读模式
英文:

Hibernate - save return value of a method rather then the field

问题

  1. 我想将列表中的所有字符串值保存到数据库中作为一个字符串如果按照下面的实现它会保存空值是否有任何方法可以保存方法的返回值而不是字段本身
  2. @Entity
  3. @Table(name = "commands")
  4. public class Command {
  5. @Id
  6. @GeneratedValue(strategy = GenerationType.IDENTITY)
  7. private Long id;
  8. @Column(name = "command")
  9. private String command;
  10. @Transient
  11. private List<String> validResultList = new ArrayList<>();
  12. public List<String> getValidResultList() {
  13. return validResultList;
  14. }
  15. public void setValidResultList(List<String> validResultList) {
  16. this.validResultList = validResultList;
  17. }
  18. @Column(name = "valid_commands")
  19. public String getValidResultListAsString() {
  20. StringBuilder sb = new StringBuilder();
  21. for (String value : validResultList) {
  22. sb.append(value).append(" ");
  23. }
  24. return sb.toString();
  25. }
  26. }
  27. 字段 "valid_commands" VARCHAR2
  28. 例如
  29. Command comm1 = new Command("echo test;");
  30. comm1.setValidResultList(Arrays.asList("foo", "bar"));
  31. 应该保存为
  32. "foo bar "
英文:

I want to save all String values of the list into the database as one String. If implemented as bellow it saves null value. Is there any way how to save a return value of method instead of the fiels itself?

  1. @Entity
  2. @Table(name = &quot;commands&quot;)
  3. public class Command {
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.IDENTITY)
  6. private Long id;
  7. @Column(name = &quot;command&quot;)
  8. private String command;
  9. @Transient
  10. private List&lt;String&gt; validResultList = new ArrayList&lt;&gt;();
  11. public List&lt;String&gt; getValidResultList() {
  12. return validResultList;
  13. }
  14. public void setValidResultList(List&lt;String&gt; validResultList) {
  15. this.validResultList = validResultList;
  16. }
  17. @Column(name = &quot;valid_commands&quot;)
  18. public String getValidResultListAsString() {
  19. StringBuilder sb = new StringBuilder();
  20. for (String value : validResultList) {
  21. sb.append(value).append(&quot; &quot;);
  22. }
  23. return sb.toString();
  24. }
  25. }

The field "valid_commands" is VARCHAR2.

For example:

  1. Command comm1 = new Command(&quot;echo test;&quot;);
  2. comm1.setValidResultList(Arrays.asList(&quot;foo&quot;, &quot;bar&quot;));

And it should save as:

  1. &quot;foo bar &quot;

Would be glad for any tips.

答案1

得分: 0

只需定义一个名为"validResultListAsString"的字段,并在setValidResultList中设置其值,并通过getValidResultListAsString返回。此外,不应同时使用字段和属性注释。

英文:

Simply, define a filed named "validResultListAsString" and set its value at setValidResultList and return it by getValidResultListAsString. In addition, you shouldn't use filed and property annotations together.

huangapple
  • 本文由 发表于 2020年3月15日 06:19:08
  • 转载请务必保留本文链接:https://java.coder-hub.com/60687816.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定