我正在尝试使用JPA1和Hibernate实现来持久保存两个不同的实体.代码如下所示:
父实体类
@Entity
@Table(name = "parent")
public class Parent implements Serializable {
{...}
private Child child;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "child_id", nullable = "false")
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
Run Code Online (Sandbox Code Playgroud)
子实体类
@Entity
@Table(name = "child")
public class Child implements Serializable {
private Integer id;
@Id
@Column(name = "child_id")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
测试用例
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:META-INF/application.xml")
@Transactional …Run Code Online (Sandbox Code Playgroud) 我一直在四处张望,试图弄清楚下面的映射有什么问题.我理解以下映射对于ORM来说并不理想,但这就是数据库的方式,我不能改变它的结构.我正在使用JPA 2.1和Hibernate 5.0.2.Final.
@MappedSuperclass
public abstract class BaseEntity<T extends Serializable> implements Serializable {
protected T id;
@Id
public T getId() {
return id;
}
protected void setId(T id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
@Table(name = "campaign")
@AttributeOverride(name = "id", column = @Column(name = "campaign_id") )
public class Campaign extends BaseEntity<String> {
// attributes, getters and setters
}
Run Code Online (Sandbox Code Playgroud)
@Embeddable
public class CampaignBroadcastPK implements Serializable {
@ManyToOne
@JoinColumn(name = "campaign_id", insertable = false, updatable = false)
private Campaign campaign;
@Column(name = …Run Code Online (Sandbox Code Playgroud) 我一直在尝试为Spring Boot 2上的单元测试禁用Flyway,但未能成功。
从Spring Boot的文档中,我了解到,这样做的属性从更改flyway.enabled为spring.flyway.enabled,并将其添加到了我的测试应用程序配置文件中(如下所示)。
spring:
datasource:
url: jdbc:h2:mem:db
jpa:
hibernate:
ddl-auto: create
flyway:
enabled: false
Run Code Online (Sandbox Code Playgroud)
此配置似乎完全无效,并且仍会调用Flyway自动配置。
我还尝试为添加的单元测试创建一个单独的自动配置类@EnableAutoConfiguration(exclude = FlywayAutoConfiguration.class),但这与上一个失败一样多。
有谁知道是否有一种简单的方法来重构代码以使用foreach迭代集合而不是while/Iterator组合?
例:
我有:
Iterator<MyObject> iterator = list.iterator();
while (iterator.hasNext()) {
MyObject myObject = iterator.next();
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
而且我要:
for (MyObject myObject : list) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
是的,我知道我不会得到任何性能提升.我只是希望它不那么冗长,因为我喜欢:)
我在 Spring Boot 中有一个 Rest 应用程序,配置了安全性并为其公开的服务实现了 JWT 令牌。但该应用程序还连接到其他第三方应用程序,这些应用程序也使用 JWT 进行保护,并且每个应用程序使用不同的令牌。
我的问题是:存储这些第三方代币的最佳策略是什么?是否有类似SecurityContextHolder, 但用于存储应用程序用于在其他服务上进行身份验证的令牌?