gpt4 book ai didi

java - 如何将 boolean 参数传递给HQL new构造函数

转载 作者:行者123 更新时间:2023-12-02 08:31:15 25 4
gpt4 key购买 nike

情况:我有一个对象SubjectRow,它包装对象Subject(对象Subject是可持久实体)。我需要直接在 HQL 中创建新的包装对象。

public class SubjectRow{
Subject subject;
String myString;
boolean myBoolean;

public SubjectRow(SubjectSch subject, String myString) {
this.subject = subject;
this.myString = myString;
}

public SubjectRow(SubjectSch subject, boolean myBoolean) {
this.subject = subject;
this.myBoolean = myBoolean;
}


}

带有字符串的构造函数的 HQL(它的工作方式应该如此):

SELECT new package.SubjectRow(s, 'myString') FROM Subject s

问题。有时我需要调用此包装器的另一个构造函数来接受 boolean 值而不是字符串的问题。我尝试了同样的方法

SELECT new package.SubjectRow(s, true) FROM Subject s

但是 Hibernate 提示它无法在类SubjectRow 中找到合适的构造函数。当然,我可以传递字符串,然后进行适当的转换 - 但它太难看了。

问题:我应该如何更改 HQL 和/或构造函数以直接传递此 boolean 参数(可以使用 boolean 值代替)?

“解决方案”。因为我无法找到如何正确传递 boolean 值,所以我必须稍微修改我的域对象。我只是从SubjectRow 中删除这个 boolean 属性,而是创建作为原始对象的子对象的SubjectRowFalse 和SubjectRowTrue 类。现在只使用两个 HQL

SELECT new package.SubjectRowTrue(s) FROM Subject s

SELECT new package.SubjectRowFalse(s) FROM Subject s

当然,这只是一种解决方法,并不是解决原始问题

最佳答案

我不是 100% 确定,但我认为您可能需要使用 boolean 对象而不是 boolean 基元。

关于java - 如何将 boolean 参数传递给HQL new构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com