java - JHipster 实体在 JSON 中序列化时将用户属性设置为 null

标签 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
}]

最佳答案

实际上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并重新启动应用程序。

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

关于java - JHipster 实体在 JSON 中序列化时将用户属性设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56699721/

相关文章:

java - 基于时间的线程安全优先级队列

java - Java 程序中的方法不会获取用户输入

java - Spring Boot JPA 存储库类的 Byte Buddy 运行时生成

java - 使用 Jackson 将 Guava Optional<Integer> 序列化为字符串

java - POST 到 Spring MVC Controller 结果为 "HttpMessageNotReadableException: Could not read JSON: No suitable constructor found"

java - Jackson Mixin + 创建者不工作

java - 在单个函数调用中调用两个函数

java - 为什么 Android 的 WebView 不加载某些 URL?

java - 无法访问 Spring Boot 应用程序中的属性

hibernate - SpringBoot hibernate gradle字节码增强