如果序列化源(例如 json 对象)不包含该字段,我如何指示 Jackson 不要自动反序列化kotlin.Boolean参数false?
请参阅当前示例:
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
data class Test(
var param1: String,
var param2: Boolean
)
fun main() {
val mapper = jacksonObjectMapper()
// passes, param2 is set to false, why isnt exception thrown?
val test1 = mapper.readValue("{\"param1\": \"bah\"}", Test::class.java)
// throws com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException
val test2 = mapper.readValue("{\"param2\": true}", Test::class.java)
}
Run Code Online (Sandbox Code Playgroud)
在我没有给布尔参数赋值的第一种情况下,如何让 jackson 抱怨异常?
我对此很感兴趣,因为如果客户端没有为布尔参数赋值,我希望我的 API 停止并抱怨。我不希望它在发生这种情况时简单地设置为 false。
谢谢!
你好!我正在尝试编写一个测试来检查 JOIN FETCH 查询是否正确获取惰性集合。我正在一个简单的 Spring Boot 2.1.7 项目中尝试这个,其中 h2 有数据源,并且加载了 spring-boot-starter-data-jpa 。测试是使用 Junit4 和 assertJ 进行的,我认为这并不重要。
当我使用时@DataJpaTest,集合在这里返回空,而不是例如@SpringBootTest,我不明白为什么。
我有两个简单的实体,Classroom和Person。一个教室可以容纳多人。这是在课堂上定义的:
@OneToMany(mappedBy = "classroom", fetch = FetchType.LAZY)
private Set<Person> persons = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)
在 person 类中:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "classroom_id")
private Classroom classroom;
Run Code Online (Sandbox Code Playgroud)
在 中ClassRoomRepository,我定义了一个应该急切地获取教室中的人员的方法:
@Query("SELECT DISTINCT c FROM Classroom c JOIN FETCH c.persons WHERE c.id = :classroomId")
Classroom getClassRoom(@Param("classroomId") Long classRoomId);
Run Code Online (Sandbox Code Playgroud)
@RunWith(SpringRunner.class)
@DataJpaTest
public class ClassroomTest{
@Autowired …Run Code Online (Sandbox Code Playgroud)