在JSON中序列化时,JHipster实体的用户属性设置为null

时间:2019-06-21 08:34:30

标签: java spring-boot jackson jhipster

我不是Spring Boot的专家,也不是JHipster的初学者

我的实体是:

@Entity
@Table(name = "meal")
public class Meal implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    @ManyToOne(fetch = FetchType.EAGER) // added this to JHipster generation
    @JsonIgnoreProperties("meals")
    private User user;

    // ...
}


我认为不需要获取请求,因为我想默认情况下它是渴望的。我也尝试过有无@JsonIgnoreProperties

我没有碰过GET /api/meals资源

    @GetMapping("/meals")
    public ResponseEntity<List<Meal>> getAllMeals(Pageable pageable, @RequestParam MultiValueMap<String, String> queryParams, UriComponentsBuilder uriBuilder) {
        Page<Meal> page = mealService.findAll(pageable);
        HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(uriBuilder.queryParams(queryParams), page);
        return ResponseEntity.ok().headers(headers).body(page.getContent());
    }

也不提供服务:

    @Transactional(readOnly = true)
    public Page<Meal> findAll(Pageable pageable) {
        log.debug("Request to get all Meals");
        return mealRepository.findAll(pageable);
    }

我得到了这个JSON:

[ {
  "id" : 1,
  "instant" : "2019-06-20T03:59:53Z",
  "user" : null
}, {
  "id" : 2,
  "instant" : "2019-06-20T04:18:47Z",
  "user" : null
}]

1 个答案:

答案 0 :(得分:0)

实际上liquibase加载的数据库文件meals.csv没有user列。

我已经更新了meals.csv文件

id;instant;text;user_id
1;2019-06-20T03:59:53;My own value;4
2;2019-06-20T04:18:47;And another meal;4

通过找到loadData手动更新变更集(可能不是最佳实践!)

<changeSet id="20190620074431-1-data" author="jhipster" context="faker">
        <loadData
                  file="config/liquibase/data/meal.csv"
                  separator=";"
                  tableName="meal">
            <column name="id" type="numeric"/>
            <column name="instant" type="datetime"/>
            <column name="text" type="string"/>
            <column name="user_id" type="numeric"/> <!-- <<< Added this -->
        </loadData>
</changeSet>

然后运行./mvnw clean并重新启动该应用。

这对我有用,似乎合乎逻辑,但是我想知道为什么不是随机生成外键。