小编Dom*_*nic的帖子

将JSON.stringify与TypeScript getter/setter结合使用

我在TypeScript中使用getter/setter访问器.由于变量和方法不可能具有相同的名称,因此我开始使用较低的短划线为变量添加前缀,如许多示例所示:

private _major: number;

get major(): number {
  return this._major;
}
set major(major: number) {
  this._major = major;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我使用JSON.stringify()方法将对象转换为JSON字符串时,它将使用变量名作为键:_major.

由于我不希望JSON文件的所有键都以下划线作为前缀,因此有可能使TypeScript使用getter方法的名称(如果可用)吗?或者是否有其他方法可以使用getter/setter方法,但仍然可以生成干净的JSON输出?

我知道有些方法可以在将JSON密钥写入字符串输出之前手动修改它们.如果有更简单的解决方案,我很好奇.

这是一个JSFiddle,它演示了当前的行为.

json getter-setter typescript

12
推荐指数
3
解决办法
6012
查看次数

使用Gradle将所有创建的和第三方jar复制到一个文件夹中

我们有一个多项目gradle设置,每个子项目有一个Java jar:

- root-project
  |-sub-project-a
  |-sub-project-b
  |-sub-project-c
Run Code Online (Sandbox Code Playgroud)

现在,因为我们正在创建Java webstart应用程序,所以我们需要签署所有项目jar以及所有第三方库(依赖项).

我现在的方法是将所有已构建的子项目jar和所有第三方库复制到一个单独的文件夹中,并执行签名任务.但是我无法复制罐子.

这是我在root build.gradle中的方法:

task copyFiles(type: Copy, dependsOn: subprojects.jar) {
    from configurations.runtime
    from("build/libs")
    into("webstart/lib")
    include('*.jar')
}
Run Code Online (Sandbox Code Playgroud)

和...一起:

task signAll(dependsOn: [copyFiles]) << {
    new File('webstart/signed').mkdirs()
    def libFiles = files { file('webstart/lib').listFiles() }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试执行gradle signAll.但是,我只能在webstart/lib文件夹中找到一个带有根项目名称的空jar.

也许我的方法是完全错误的.如何将所有创建的和第三方派对复制到一个文件夹中?

java jar java-web-start gradle

7
推荐指数
1
解决办法
9444
查看次数

JPA(Hibernate):在通用@MappedSuperclass中使用@EmbeddedId时出错

我目前正在为遗留数据库定义 JPA 实体(大量复合键,但也有单列键)。我创建了以下实体超类:

@MappedSuperclass
public abstract class AbstractEntity<ID extends Serializable> {
    public abstract ID getId();
    public abstract void setId(ID id);
}
Run Code Online (Sandbox Code Playgroud)

然后是复合键的超类(以及长主键的超类,此处未列出):

@MappedSuperclass
public abstract class AbstractEmbeddedIdEntity<ID extends Serializable> extends AbstractEntity<ID> {
    @EmbeddedId
    private ID id;

    public AbstractEmbeddedIdEntity() {
        id = newId();
    }

    @Override
    public ID getId() {
        return id;
    }

    @Override
    public void setId(ID id) {
        this.id = id;
    }

    protected abstract ID newId();
}
Run Code Online (Sandbox Code Playgroud)

最后是这样的具体实体:

@Entity
@Table(name = "firstEntity")
public class FirstEntity extends AbstractEmbeddedIdEntity<FirstEntityId> {

    public FirstEntity() { …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa

5
推荐指数
1
解决办法
2296
查看次数

如何在 svelte 组件和 webpack 中包含静态资产/图像?

我想创建一个使用/导入静态图像的 svelte 组件(基于 webpack)。我如何确保图像被正确导出,即使用我的组件的苗条应用程序也能看到图像?

在我的组件中,我尝试导入图像并使用 webpack 的文件加载器:

import image from "./image.jpg";
Run Code Online (Sandbox Code Playgroud)

{
    test: /\.(png|svg|jpg|gif)$/,
    use: [
        'file-loader',
    ],
}
Run Code Online (Sandbox Code Playgroud)

这有效,图像包含在 dist 文件夹中,但在这种情况下,我还需要向主 svelte 应用程序添加一个文件加载器,这是我想避免的额外要求。主应用程序应该只需要导入我的组件。

这是可能的还是以上已经是推荐的方法?

webpack webpack-file-loader svelte svelte-component

5
推荐指数
1
解决办法
2501
查看次数

JPA生成的SQL脚本的行尾缺少分号

我正在使用JPA生成用于基于我的实体创建数据库表的脚本:

javax.persistence.schema-generation.scripts.action=create
javax.persistence.schema-generation.scripts.create-target=db_setup.sql
Run Code Online (Sandbox Code Playgroud)

该文件是用正确的表生成的,但是语句不以分号结尾,例如:

create table hibernate_sequence (next_val bigint)
insert into hibernate_sequence values ( 1 )
insert into hibernate_sequence values ( 1 )
Run Code Online (Sandbox Code Playgroud)

我认为这在标准SQL中有效吗?但是,它在MySQL中无效。有没有办法告诉JPA将分号添加到行尾?还是缺少它的原因是什么?

java mysql sql jpa

4
推荐指数
1
解决办法
981
查看次数