请教大家一个关于 SpringBoot 的问题

2020-02-18 21:59:32 +08:00
 Jianrry

有一个实体类 Article.java

里面有两个字段

    @ManyToMany(cascade = {CascadeType.PERSIST})
    private List<Tag> tags = new ArrayList<>();

    @Transient
    private String tagStr;

tagStr 的作用是将 tags 拼接成字符串(StringUtils.join(tags , ",")),然后在前台显示, 这是一个非数据库字段.

我想请教一下如何给 tagStr 动态赋值?

我尝试过在 tagStr 的 set 方法里面赋值,在前台里面调用这个属性,结果返回的是空.

public void setTagStr(String tagStr) {
    this.tagStr = StringUtils.join(tags , ,);
}

在网上搜索了半天, 还没找到什么适合的解决方案,麻烦各位大佬帮忙看一下

1454 次点击
所在节点    问与答
8 条回复
gaobing
2020-02-18 22:24:52 +08:00
没有 tagStr 字段,set 方法不会被调用的,select 语句里使用 select “1” tagStr,... ,或者 get 方法设置一下 public String getTagStr(String tagStr) {
return StringUtils.join(tags , ,);
}
Jianrry
2020-02-18 22:36:28 +08:00
@gaobing

get 方法里面已经试过了, 返回的是报错信息

```
A problem occurred whilst attempting to access the property 'tagStr': 'Unable to access property 'tagStr' through getter method'
```
tagStr 这个属性没有办法通过 get 方法访问到

至于 select 语句里使用 select “1” tagStr,... ,我用的是 springboot jpa 里面没有办法写 sql 语句,所以没有尝试.
leonme
2020-02-18 22:41:07 +08:00
@Jianrry jpa 可以写 sql 啊
Jianrry
2020-02-18 22:54:22 +08:00
@leonme 抱歉, 刚才去搜了一下,发现是我错了, spring jpa 也可以写 sql, 我实在是太无知了.
jamesxu
2020-02-18 23:41:13 +08:00
@gaobing
@Jianrry
get 方法写错了,括号里没有参数,用 get 方法是完全没有问题的,我经常这么干
Jianrry
2020-02-19 00:05:59 +08:00
@jamesxu 上面的 get 方法确实写错了,不需要传参,但正确的 get 方法我也试过了呀,还是和上面一样的报错信息...


public String getTagStr() {
return StringUtils.join(tags,",");
}
wpblank
2020-02-19 01:11:47 +08:00
直接把变量删了,单独加这个 get 方法呢?
Jianrry
2020-02-19 14:42:42 +08:00
@wpblank 已经试过了,还是报错,前端取不到值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/645664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX