小编sol*_*nmv的帖子

升级到Spring Boot 2后,ObjectMapper无法在没有默认构造函数的情况下反序列化

我有以下DTO:

@Value
public class PracticeResults {
    @NotNull
    Map<Long, Boolean> wordAnswers;
}

@Value
public class ProfileMetaDto {

    @NotEmpty
    String name;
    @Email
    String email;
    @Size(min = 5)
    String password;
}
Run Code Online (Sandbox Code Playgroud)

@Value是一个生成构造函数的Lombok注释.这意味着该类没有no-arg构造函数.

我使用Spring Boot 1.4.3.RELEASE和ObjectMapper bean能够从json反序列化这样的对象.

升级到Spring Boot 2.0.0.M7后,我收到以下异常:

@Value

Spring Boot 1.4.3中使用的Jackson版本适用于ObjectMapperSpring Boot 2.0.0.M7是com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of PracticeResults (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator).

我试过谷歌这个问题,但发现只有2.8.10或的解决方案2.9.2.

那么,为什么它与Spring Boot 1.4.3一起使用并且在Spring Boot 2中失败?是否可以将bean配置为与旧版本相同的方式?

java spring jackson lombok spring-boot

28
推荐指数
4
解决办法
3万
查看次数

如何使用JPA和Hibernate删除带有JOIN的实体

我有以下实体:

在此输入图像描述

我想使用JPA删除用户的id和用户名的WordSet.

这是实体声明:

用户

@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class User extends AbstractModelClass {

    private String name;
    private String username;
    private String password;
    private String email;

    @ManyToMany(fetch = FetchType.EAGER)
    private Set<Role> roles;
}
Run Code Online (Sandbox Code Playgroud)

UserDictionary

@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class UserDictionary extends AbstractModelClass {

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "userDictionary")
    private Set<WordSet> wordSets;

    @OneToOne(cascade = CascadeType.ALL)
    private User user;

    @PrePersist
    private void addDictionaryToWordSets() {
        wordSets.forEach(wordSet …
Run Code Online (Sandbox Code Playgroud)

java mysql sql hibernate jpa

10
推荐指数
1
解决办法
7941
查看次数

Gradle无法在Mac上运行Docker任务

我正在使用gradle-dockerPalantir的插件。当我尝试构建docker时,收到以下错误消息:

Starting process 'command 'docker''. Working directory: /Users/msolomkin/Projects/glossary/discovery-server/build/docker Command: docker build --build-arg JAR_FILE=discovery-server-0.0.1-SNAPSHOT.jar -t solomkinmv/discovery-server .

但是,当我/Users/msolomkin/Projects/glossary/discovery-server/build/docker手动转到工作目录()并运行命令时,docker build --build-arg JAR_FILE=discovery-server-0.0.1-SNAPSHOT.jar -t solomkinmv/discovery-server .一切正常。

另外,我的Travis能够构建docker映像。看来这是我的Mac Docker安装问题。

Mac版Docker:17.12.0-ce-mac49(21995)

摇篮版本:4.4.1

这是我的任务配置:

docker {
    name "solomkinmv/${bootJar.baseName}"
    println "==> Docker task for ${name}"
    files bootJar.archivePath
    buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
}
Run Code Online (Sandbox Code Playgroud)

这是GitHub的链接:https : //github.com/solomkinmv/glossary/tree/discovery-server/discovery-server

为Docker for Mac配置env变量以能够运行gradle任务的正确方法是什么?

java gradle docker docker-for-mac

5
推荐指数
0
解决办法
321
查看次数

如何禁用执行器安全性而不使用 Spring Boot 2 完全禁用它

我正在使用带有 OAuth2 的 Spring Boot Security。我不想禁用健康端点的安全性。

我可以完全禁用安全性或编写自己的实现WebSecurityConfigurerAdapter并禁用自动配置的实现。

但是如何修改WebSecurityConfigurerAdapter( OAuth2SsoDefaultConfiguration) 的现有实现呢?

我尝试在不禁用自动配置的情况下创建自己的配置,但由于Order冲突,这是不可能的。

这是错误消息:

Caused by: java.lang.IllegalStateException: @Order on WebSecurityConfigurers must be unique. 
Order of 100 was already used on SecurityConfiguration$$EnhancerBySpringCGLIB$$9505fc58@13f182b9,
 so it cannot be used on 
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2SsoDefaultConfiguration$$EnhancerBySpringCGLIB$$dc290e2b@5ee0cf64 too.
Run Code Online (Sandbox Code Playgroud)

此外,我试图为我自己的安全配置明确设置更高的顺序,但看起来自动配置的一个覆盖了我的。

那么如何在不重新实现整个配置的情况下覆盖特定的安全规则呢?

spring spring-security spring-boot spring-security-oauth2 spring-boot-actuator

4
推荐指数
2
解决办法
2万
查看次数

如何将lambda传递给宏?

我需要传递函数并使用指定的参数调用它.如何正确地将lambda函数传递给宏并避免此错误:

APPLY:#'(LAMBDA(X)(+ X 1))不是函数名; 尝试使用符号代替

码:

(defmacro runner (fun &rest arg)
  (apply fun arg))
Run Code Online (Sandbox Code Playgroud)

呼叫:

(runner #'(lambda (x) (+ x 1)) '(1))
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?尝试了与+功能类似的东西,一切正常.

更新:程序应为每个参数调用指定的函数并返回结果.参数是列表.所以我应该通过不同的功能列出.

(setq l1 (list 1 2 3))
(setq l2 (list 2 3 4))
(setq l3 (list 3 4 5))

(defmacro runner (fun &rest arg)
  ; some code
)

(defun summer (l)
  (reduce #'+ l))

(print (runner summer l1 l2 l3))
Run Code Online (Sandbox Code Playgroud)

就像这样,但有任意数量的参数.

(defun runner (l)
   (mapcar #'(lambda (x) (summer x)) l))

(print (runner (list l1 l2 …
Run Code Online (Sandbox Code Playgroud)

lisp lambda common-lisp

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

使用 Spring 正确测试 JPA DAO

我创建了简单的 JPA 实体:Topic 和 Word。主题包含单词列表。

@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.REMOVE})
@JoinTable
private List<Word> words;
Run Code Online (Sandbox Code Playgroud)

现在我想使用内存中的 H2 数据库测试我的 DAO。在测试类中,我编写了不同的测试来操作数据。但是我想为每个测试获得一个干净的数据库,所以我添加了 tearDown 方法来删​​除所有单词和主题。

我的测试类的片段:

@RunWith(SpringRunner.class)
@SpringBootTest
public class TopicServiceJpaDaoTest {
    @Autowired
    private TopicDao topicDao;

    @Autowired
    private WordDao wordDao;

    // different test methods

    @After
    public void tearDown() throws Exception {
        topicDao.deleteAll();
        wordDao.deleteAll();
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 但是当我尝试运行类中的所有测试时,我收到一个错误,该条目被锁定。
  2. 此外,当我运行所有集成测试时,我收到以下错误:Unable to acquire JDBC Connection.

条目的堆栈跟踪被锁定错误:

javax.persistence.PessimisticLockException: could not execute statement

    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.wrapLockException(AbstractEntityManagerImpl.java:1760)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1649)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1700)
    at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:70)
    at io.github.solomkinmv.glossary.persistence.dao.impl.WordServiceJpaDao.deleteAll(WordServiceJpaDao.java:66)
    at io.github.solomkinmv.glossary.persistence.dao.impl.TopicServiceJpaDaoTest.tearDown(TopicServiceJpaDaoTest.java:287) …
Run Code Online (Sandbox Code Playgroud)

java spring unit-testing hibernate jpa

0
推荐指数
1
解决办法
1294
查看次数