我正在创建一个 Spring Boot 应用程序,其中包含产品、类别、机械、使用位置等实体。所有这些实体的共同点是它们都有一个名为 name 的 String 属性,并且可以使用 name 从 UI 中过滤。我已经编写了一个使用名称进行过滤的产品规范,并且它正在工作。下面是代码
public final class ProductSpecifications
{
public static Specification<Product> whereNameContains(String name)
{
Specification<Product> finalSpec = (Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb)
-> cb.like(root.get(Product_.PRODUCT_NAME), "%"+name+"%");
return finalSpec;
}
public static Specification<Product> whereNameEqauls(String name)
{
Specification<Product> finalSpec = (Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb)
-> cb.equal(root.get(Product_.PRODUCT_NAME), name);
return finalSpec;
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是我必须再次编写相同的代码来过滤其他实体,唯一的区别是类名(Product)、字段名称(Product_NAME)和方法的返回类型。我可以创建一个通用类和方法吗?我可以将类名和字段名作为参数传递给它,并返回相应返回类型的规范。
我正在将一个整数数组保存到 PostgreSQL 表中,并且在尝试检索它时,我总是得到 []uint8 而不是 []int。我尝试使用 []integer、[]bigint、[]smallint。没有任何效果。该数组最多表示四项,每一项在 1-100 之间,没有浮点数。
我正在使用 Go,并且我有一个 []int 对象,这是字段:
Quantity []int `json:"quantity" db:"quantity"`
Run Code Online (Sandbox Code Playgroud)
我正在尝试修复它,但找不到让 PostgreSQL 返回 []int 的方法。
所有其他表字段都很好用。该Quantity字段的类型integer[]
这是插入查询:
"INSERT INTO products (product_id, name, manufacturer, image_url, quantity, amount, notes, store_id, store_name, owner_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", newProduct.UID, newProduct.Name, newProduct.Manufacturer, newProduct.Image, pq.Array(newProduct.Quantity), newProduct.Amount, newProduct.Notes, newProduct.StoreID, newProduct.StoreName, newProduct.OwnerID);
Run Code Online (Sandbox Code Playgroud)
这就是我尝试获取数据的方式。
err := rows.Scan(&temp.ID, &temp.UID, &temp.Name, &temp.Manufacturer,
&temp.Image, &temp.Amount, &temp.Notes,
&temp.StoreID, &temp.OwnerID, &temp.StoreName, &temp.Quantity)
Run Code Online (Sandbox Code Playgroud)
问题仅在于数量。如果我更改temp object为[]uint8 …
Java中是否有任何库可以将字符串“Y”转换为true或将“N”转换为false?
我做了一个枚举,但我不知道这是否是最好的方法:
public enum BooleanEnum {
TRUE("Y"), FALSE("F");
private String booleanValue;
private BooleanEnum(String booleanValue) {
this.booleanValue = booleanValue;
}
public String getBooleanValue() {
return booleanValue;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用:
if (BooleanEnum.TRUE.getBooleanValue().equals(cpoPipelineDTO.getCpoPipelineCategory().getIsDataFlow())) {
Run Code Online (Sandbox Code Playgroud) 我正在处理 POJO 的 spring 和 spring 验证。
在 POJO 内部,我有一些字段,其值将映射到特定ENUM类。
正如下面的代码中提到的,我的 cardType 字段为CardType ENUM.
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
@Data
@SuperBuilder(toBuilder = true)
@RequiredArgsConstructor
@EqualsAndHashCode
class SamplePOJO {
private String cardType;
@Length(max = 20)
private String name;
@Max(10)
private int number
}
public enum CardType {
VISA, MASTER;
}
Run Code Online (Sandbox Code Playgroud)
对于姓名和号码我可以做@Max and @Length。我如何对属于提到的cardType应用验证enum。同样在将来,我可能List 还需要检查值。所以如果有人可以指导我。
我有以下课程
@Entity
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "comment_id")
private Long commentId;
@Column(name = "creator_id")
private Long creatorId;
@Column(name = "text")
@ApiModelProperty(value = "Text des Kommentar")
private String text;
@Column(name = "timestamp")
@ApiModelProperty(value = "Zeitstempel der letzten Bearbeitung")
private String timestamp;
protected Comment() {}
public Comment(CommentDto dto) {
this();
updateComment(dto);
}
private void updateComment(CommentDto dto) {
setText(dto.getText());
setCreatorId(dto.getCreatorId());
setTimestamp(UtilService.getTimestampString());
}
Run Code Online (Sandbox Code Playgroud)
我从 HTTP 请求中获得一个 CommentDto,其中包含文本和 CreatorId。
据我了解,commentId 应该通过调用空构造函数来生成。
在我的服务中,我执行以下操作
public void addComment(CommentDto comment) {
Comment commentEntity = …Run Code Online (Sandbox Code Playgroud) 我有一个Movie模型,它在 Gorm 中定义了很多多对多关系。现在我必须创建一个 API 来查询在这些关系中具有 ID 的所有电影。
让我们把它分成小块:
电影型号:
type Movie struct {
gorm.Model
TitleID string `gorm:"size:50;not null" json:"title_id"`
OriginalName string `gorm:"size:250;not null" json:"original_name"`
Categories []Category `gorm:"null;many2many:movie_categories;" json:"categories"`
Types []Type `gorm:"null;many2many:movie_types;" json:"types"`
Directors []Cast `gorm:"null;many2many:movie_directors;" json:"directors"`
Writers []Cast `gorm:"null;many2many:movie_writers;" json:"writers"`
}
Run Code Online (Sandbox Code Playgroud)
我的查询功能:
func (u *Movie) FindMoviesByDirectors(db *gorm.DB, directors string) (*[]Movie, error) {
var err error
movies := []Movie{}
err = db.Set("gorm:auto_preload", true).Where("directors = ?", directors).Find(&movies).Error
if err != nil {
return &[]Movie{}, err
}
return &movies, err
} …Run Code Online (Sandbox Code Playgroud) 我正在根据语言和地区设置区域设置,并希望使用此设置解析 BigDecimal 数字。但我面临的问题是两个 OpenJDK 的分组分隔符不同。
下面是我尝试使用 OpenJDK 8 和 OpenJDK 11 执行的示例代码。
Locale l = new Locale.Builder().setLanguage("de").setRegion("CH").build();
System.out.println("Locale set to " + Locale.getDefault(Locale.Category.FORMAT));
DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance(Locale.getDefault(Locale.Category.FORMAT));
System.out.println("Grouping Separator: " + nf.getDecimalFormatSymbols().getGroupingSeparator());
Run Code Online (Sandbox Code Playgroud)
输出
OpenJDK 8
---------
Locale set to de_CH
Grouping Separator: '
OpenJDK 11
----------
Locale set to de_CH
Grouping Separator: ’
Run Code Online (Sandbox Code Playgroud)
我需要一个通用的解析方法,其中分组分隔符返回相同,以便设计我的单元测试很容易,并且无论是使用 java 8 还是 11 运行它都会通过。请协助。
这段代码:
String dateString = "20210811T021500Z";
String dateFormat = "yyyyMMdd'T'HHmmss'Z'";
System.out.println(LocalDateTime.parse(dateString, dateFormat).toString());
System.out.println(LocalDateTime.parse(dateString, dateFormat).atZone(ZoneId.of("Europe/Budapest")).toString());
System.out.println(ZonedDateTime.of(LocalDateTime.parse(dateString, dateFormat), ZoneId.of("Europe/Budapest")).toString());
Run Code Online (Sandbox Code Playgroud)
输出这个:
2021-08-11T02:15
2021-08-11T02:15+02:00[Europe/Budapest]
2021-08-11T02:15+02:00[Europe/Budapest]
Run Code Online (Sandbox Code Playgroud)
如何打印调整后的时间?我希望结果是2021-08-11T04:15.
例子:
array = [{name:'Anna'}, {name:'Bob'}, {name:'Joe'}, {name:'Anna'}]
Run Code Online (Sandbox Code Playgroud)
我需要按名称对该数组进行分组以获得单独的数组,例如:
array 1 = [{name:'Anna'}, {name:'Anna'}]
array 2 = [{name:'Joe'}]
array 3 = [{name:'Bob'}]
Run Code Online (Sandbox Code Playgroud)
不知道如何执行此操作。谢谢!
升级到 Spring Boot 2.3.1 后javax.validation找不到包。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Run Code Online (Sandbox Code Playgroud)
在它工作正常之前。现在imprort javax.validation.Valid;这个导入没有解决。在这里也没有找到他们发布的任何内容
我现在需要从外部添加这个包吗?
我的代码基本上将数字排列成相反的顺序,例如 415 程序会将它排列成 514 我的代码是正确的,但我有一个问题,输出应该是垂直的。
Run Code Online (Sandbox Code Playgroud)expected output 5 1 4
import java.util.Scanner;
public class Main{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int rev=0;
while( num != 0 )
{
rev = rev * 10;
rev = rev + num%10;
num = num/10;
}
System.out.println(rev);
}
}
Run Code Online (Sandbox Code Playgroud) java ×7
java-8 ×3
go ×2
postgresql ×2
spring ×2
spring-boot ×2
criteria-api ×1
do-while ×1
ecmascript-6 ×1
go-gorm ×1
integer ×1
java-11 ×1
java-time ×1
javascript ×1
jpa ×1
locale ×1
loops ×1
openjdk-11 ×1
pq ×1
validation ×1