我使用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) 我有一个Spring控制器注释,@RestController它返回JSON.我还有一个带有@ControllerAdvice与@ExceptionHandler一些自定义异常相关的s 注释的类.我正在使用Tomcat来提供这个RESTful API.我希望有任何非自定义异常,例如来自第三方库或NullPointerException的异常被捕获并返回状态500 - 内部服务器错误为JSON,带有消息而不是显示错误的HTML页面.
如果我@ExceptionHandler(Exception.class)在控制器建议中使用它,它将接管所有Spring异常,如MissingPathVariableException.class,这是不理想的.我已经尝试过扩展Spring的ResponseEntityExceptionHandler,但是这个类没有用@ResponseBody注释,所以不返回JSON.
java json exception-handling spring-mvc spring-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) 我从 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) java ×2
spring-mvc ×2
foreign-keys ×1
hibernate ×1
jenkins ×1
jpa ×1
json ×1
many-to-many ×1
primary-key ×1
spring ×1