小编duk*_*ash的帖子

使用JPA和Hibernate提供程序的ManyToMany关系不会创建主键

我使用Hibernate作为具有ManyToMany关系的提供程序创建了两个JPA实体(Client,InstrumentTraded).让Hibernate为MySQL生成表后,看起来ManyToMany关系表不包含两个外键的主键.这允许多对多表中的重复记录,这不是期望的结果.

生成的表:

client(id,name)  
instrument_traded(id,name)  
client_instrument_traded(FK client_id, FK instrument_traded_id)
Run Code Online (Sandbox Code Playgroud)

首选表格:

client_instrument_traded(PK,FK client_id, PK,FK instrument_traded_id)
Run Code Online (Sandbox Code Playgroud)

实体:

@Entity
public class Client extends AbstractEntity<Integer> {

    private static final long serialVersionUID = 1L;

    @Basic(optional = false)
    @Column(nullable = false, length = 125)
    private String name;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(joinColumns = {
        @JoinColumn}, inverseJoinColumns = {
        @JoinColumn(name = "instrument_traded_id")}, uniqueConstraints =
    @UniqueConstraint(name = "UK_client_instruments_traded_client_id_instrument_traded_id",
    columnNames = {"client_id", "instrument_traded_id"}))
    @ForeignKey(name = "FK_client_instruments_traded_client_id",
    inverseName = "FK_client_instruments_traded_instrument_traded_id")
    private List<InstrumentTraded> instrumentsTraded;

    public Client() {
    }

    public List<InstrumentTraded> getInstrumentsTraded() {
        return …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate jpa foreign-keys primary-key

8
推荐指数
3
解决办法
1万
查看次数

在Spring控制器中返回未捕获异常的JSON

我有一个Spring控制器注释,@RestController它返回JSON.我还有一个带有@ControllerAdvice@ExceptionHandler一些自定义异常相关的s 注释的类.我正在使用Tomcat来提供这个RESTful API.我希望有任何非自定义异常,例如来自第三方库或Nu​​llPointerException的异常被捕获并返回状态500 - 内部服务器错误为JSON,带有消息而不是显示错误的HTML页面.

如果我@ExceptionHandler(Exception.class)在控制器建议中使用它,它将接管所有Spring异常,如MissingPathVariableException.class,这是不理想的.我已经尝试过扩展Sp​​ring的ResponseEntityExceptionHandler,但是这个类没有用@ResponseBody注释,所以不返回JSON.

  1. 如何在不影响Spring内部的情况下在Spring RESTful API中为未捕获和未知异常(无法计划的异常)返回JSON?
  2. 如何完全关闭返回HTML并确保只有JSON响应,无论请求是否有异常?

java json exception-handling spring-mvc spring-restcontroller

6
推荐指数
1
解决办法
2654
查看次数

如何将@RestController中的请求体转换为抽象值列表?

假设我们有以下类:

public abstract class Investment {

   private String investmentType;

   // getters & setters
}

public class Equity extends Investment {
}

public class Bond extends Investment {
}

public class InvestmentFactory {

    public static Investment getTypeFromString(String investmentType) {
        Investment investment = null;
        if ("Bond".equals(investmentType)) {
            investment = new Bond();
        } else if ("Equity".equals(investmentType)) {
            investment = new Equity();
        } else {
            // throw exception
        }
        return investment;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下内容@RestController:

@RestController
public class InvestmentsRestController {

    private InvestmentRepository investmentRepository; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-restcontroller

6
推荐指数
1
解决办法
454
查看次数

如何修复 Jenkins java.lang.IllegalStateException:在加载之前尝试保存全局配置

我从 jenkins 2.219 升级到 2.272(撰写本文时的最新版本),现在在 Jenkins 启动时获得下面的堆栈跟踪。

Jenkins 文档说这是由于 Configuration as Code 插件并将 jvm args 设置为-Dio.jenkins.plugins.casc.ConfigurationAsCode.initialDelay=9000. 文档还说要增加值直到错误消失,但到目前为止我480000仍然遇到错误。我也没有看到我已经安装了 Configuration as Code 插件。

如何解决这个问题?

java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
    at jenkins.model.Jenkins.save(Jenkins.java:3379)
    at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398)
    at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637)
    at jenkins.model.Jenkins$16.run(Jenkins.java:3342)
    at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
    at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused: org.jvnet.hudson.reactor.ReactorException
    at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
    at jenkins.InitReactorRunner.run(InitReactorRunner.java:50)
    at jenkins.model.Jenkins.executeReactor(Jenkins.java:1162)
    at jenkins.model.Jenkins.<init>(Jenkins.java:962)
    at hudson.model.Hudson.<init>(Hudson.java:85)
    at hudson.model.Hudson.<init>(Hudson.java:81) …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-plugins configuration-as-code

5
推荐指数
4
解决办法
8659
查看次数