标签: spring-data

ClassCastException 试图从 JdbcTemplate 获取 OracleConnection

我正在创建一个ArrayDescriptor以便将 CLOB 数据传递给 Oracle 函数。我有一个类,我在其中注入了 ( @Inject) jdbcTemplate...这是一个调用 Oracle 的实现类。我正在创建ArrayDescriptor类似:

Connection conn = auditJdbcTemplate.getDataSource().getConnection();
ArrayDescriptor keyArryDesc = ArrayDescriptor.createDescriptor("VC_ARR", conn);
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

java.lang.ClassCastException: com.sun.proxy.$Proxy183 cannot be cast to oracle.jdbc.OracleConnection
at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:105
Run Code Online (Sandbox Code Playgroud)

正如我所说,我在这个类中直接调用了该auditJdbcTemplate.update工作,所以我不确定为什么它不能从模板返回有效的连接对象。我在 StackOverflow 中看到了几个获得底层连接的答案,但我无法让它工作。

oracle spring jdbctemplate spring-data ojdbc

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

应该如何将代理转换为 Spring Controller 中的实体?

正在从 AngularJS 应用程序调用 Spring Boot 应用程序中的 REST 服务,但 Spring 控制器无法对数据源执行简单的查找查询。相反,会引发以下错误:

java.lang.IllegalAccessError: tried to access class demo.WebLead from class com.sun.proxy.$Proxy111
Run Code Online (Sandbox Code Playgroud)

需要对下面的代码进行哪些具体更改才能使 REST 服务能够执行查询而不会抛出此错误?

在 Spring 控制器中抛出错误的代码行是:

WebLead wld = myrepo.findByIdlead(idl);
Run Code Online (Sandbox Code Playgroud)

当前面的代码行被更改为显式转换返回的实体时,也会抛出相同的错误,如下所示:

WebLead wld = (WebLead)myrepo.findByIdlead(idl);  
Run Code Online (Sandbox Code Playgroud)

Spring Boot 控制器和应用程序中的相关部分UiApplication.java是:

@SpringBootApplication
@Controller
@EnableJpaRepositories(basePackages = "demo", considerNestedRepositories = true)
public class UiApplication extends WebMvcConfigurerAdapter {

    @Autowired
    private WebLeadRepository myrepo;// {}

    @RequestMapping(value = "/some-url", method = RequestMethod.POST)
    public @ResponseBody ResultMessage submitPhone(HttpSession session, @RequestBody ResultPhone rphon) {
            ResultMessage resmess = new ResultMessage("phonetest");
        try{
            Long …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-data spring-boot

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

JPA - SpringData - 第 1 列等于第 2 列

我有一个spring-boot项目Spring-Data。我想做一个查询,如:

SELECT * FROM my_table WHERE column_1 = column_2
Run Code Online (Sandbox Code Playgroud)

我该如何使用SpringData JpaRepository? 我试图找到一种方法:

MyTable findByColumn1...Column2() 没有任何运气

spring hibernate spring-data spring-data-jpa spring-boot

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

使用@PathVariable 获取多个请求参数

在获取请求中使用多个参数调用请求时出现以下错误: http://localhost:8080/find/1/empid/146220

白标错误页面

此应用程序没有明确的 /error 映射,因此您将其视为后备。

Tue Aug 01 19:33:35 IST 2017 出现意外错误(类型 = 内部服务器错误,状态 = 500)。参数绑定的名称不能为 null 或为空!在 JDK < 8 上,您需要使用 @Param 来命名参数,在 JDK 8 或更高版本上,请务必使用 -parameters 进行编译。嵌套异常是 java.lang.IllegalArgumentException:参数绑定的名称不能为 null 或为空!在 JDK < 8 上,您需要使用 @Param 作为命名参数,在 JDK 8 或更高版本上,请务必使用 -parameters 进行编译。

演示.java

@Entity
public class Demo {

    @Id
    private Long id;
    private String name;
    private String value;
    //getter -setter
}
Run Code Online (Sandbox Code Playgroud)

演示应用程序.java

@SpringBootApplication
@RestController
public class DemoApplication {

    @Autowired
    private DemoRepository repository;

    @RequestMapping(method=RequestMethod.GET, value="/find/{id}/{name}/{value}")
    public Demo find(@PathVariable Long …
Run Code Online (Sandbox Code Playgroud)

java spring-data spring-data-jpa spring-boot

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

Spring Data findOne() NullPointerException

我想我错过了一些核心概念,因为我遇到了几个问题,但让我们从这个问题开始:当 a Userwith aSubscription保留在数据库中并且我尝试使用它时findOne(id),我得到NullPointerException. 我试图在生成的代码内部进行深入调试,似乎由于某种原因调用hashCode()Subscription对象,这也出于不清楚的原因只有一个id集合,而所有其他属性都是null,但是因为它们(可能)hashCode()通过调用自己的方法参与该方法hashCode(),我得到这个例外。

所以基本上我想要的是用户成为许多社区的一部分,在每个社区中他都可以创建对他们内容的订阅。当我第一次调用 时SubscriptionController,一切正常,它创建User,SubscriptionCommunity,我可以在数据库中看到它们,一切都很好。但是当我打电话时UserRepository.findOne(),也就是CrudRepository在里面UserSerivce- 我得到了异常。

我一直在努力解决这个问题两周,但没有运气,所以我真的希望有人能花一些时间来帮助我解决这个问题。下面是类:

用户:

@Entity
@Data
@NoArgsConstructor
public class User {
    @Column(nullable = false)
    @Id
    private Integer id;

    @OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JsonIgnore
    Set<Subscription> subscriptions;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            joinColumns = {@JoinColumn(name …
Run Code Online (Sandbox Code Playgroud)

java lombok spring-data spring-boot

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

如何为一对一关系编写 Spring JPA 查询?

我是 Spring JPA 的新手(或者说是在很长一段时间后研究它),我需要一些帮助来编写 JPA 存储库。我有一个实体类 Itinerary 和 User。两者之间是一对一的关系。

@Entity
@Table(name = "ITINERARY")
public class Itinerary implements Serializable {

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "Itinerary_IDGenerator", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "Itinerary_IDGenerator", sequenceName = "Itinerary_IDGenerator", allocationSize = 1)
    private long id;

    @Basic(optional = false)
    @Column(nullable = false)
    @Temporal(TemporalType.DATE)
    private Date itineraryDate;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USER_ID")
    User user;
}

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "User_IDGenerator", strategy = GenerationType.SEQUENCE) …
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa

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

Spring Data JPA:使用 Pageable 但使用实体的一组特定字段

我正在使用Spring Data2.0.6.RELEASE。

我正在为性能和演示目的进行分页。这里关于性能我说的是如果我们有很多记录最好通过页面显示它们

我有以下内容并且工作正常:

interface PersonaDataJpaCrudRepository extends PagingAndSortingRepository<Persona, String> {
}
Run Code Online (Sandbox Code Playgroud)

@Controller与正常工作:

@GetMapping(produces=MediaType.TEXT_HTML_VALUE)
public String findAll(Pageable pageable, Model model){
Run Code Online (Sandbox Code Playgroud)

通过Thymeleaf我能够应用分页。因此,直到这里目标已经完成。

注:Persona类都被注解JPA@EntityId,等)

现在我关心以下问题:即使分页工作Spring Data的记录数量大约是多少,每条记录的内容呢?。

我的意思是:让我们假设Persona类包含20场(考虑为您的应用程序,你想要的任何实体),从而为基于视图中的html其中一个报告只使用4个领域(ID,名字,姓氏,日期),因此,我们有16个不必要的字段对于内存中的每个实体

我尝试了以下方法:

interface PersonaDataJpaCrudRepository extends PagingAndSortingRepository<Persona, String> {

    @Query("SELECT p.id, id.nombre, id.apellido, id.fecha FROM Persona p")
    @Override
    Page<Persona> findAll(Pageable pageable);

}
Run Code Online (Sandbox Code Playgroud)

如果我在里面做一个简单的打印,@Controller它会失败关于以下内容:

java.lang.ClassCastException: 
[Ljava.lang.Object; cannot be …
Run Code Online (Sandbox Code Playgroud)

jpa spring-data spring-data-jpa

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

kotlin的JPA:懒惰和@Transient无法使用hibernate

我在我的项目中使用kotlin和JPA,但懒惰委托的kotlin似乎不适用于hibernate:

    @get:Transient
    private val shop:Shop by lazy { shopService.shop(shopId!!) }
Run Code Online (Sandbox Code Playgroud)

我收到错误:

org.hibernate.MappingException: Could not determine type for: kotlin.Lazy, at table: order, for columns: [org.hibernate.mapping.Column(shop$delegate)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:456) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:423) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.mapping.Property.isValid(Property.java:226) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:597) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.mapping.RootClass.validate(RootClass.java:265) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:461) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390) ~[spring-orm-5.0.6.RELEASE.jar:5.0.6.RELEASE]
... 20 common frames omitted
Run Code Online (Sandbox Code Playgroud)

我在这里失踪了吗?

hibernate jpa spring-data kotlin spring-boot

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

Spring Data 2.0 中的 findById() 和 existsById() 有什么区别?

Spring Data 2.0 JpaRepository:findById()和之间的区别existsById()

  • 我们使用哪种场景findById()existsById()方法?

java spring spring-data

0
推荐指数
2
解决办法
6320
查看次数

MongoDB一对多和多对一关系

我正在尝试优化我的MongoDB集合。这是示例:

@Document
class Article {
    @Id
    private String id;
    @DBRef(lazy = true)
    @CascadeSave
    private List<Comment> comments;
    private String title;
    private String text;

    // constructors, getters and setters are ommited
}

@Document
class Comment {

    @Id
    private String id;
    private String text;
    private String author;

    // constructors, getters and setters are ommited
}
Run Code Online (Sandbox Code Playgroud)

看起来很简单。获取文章,然后获取本文的所有评论。但是,如果我已经有文章ID,并且只想获取文章的所有注释该怎么办?当然也很简单。每个评论都应引用其所属的文章(例如article_id)。

我的问题是如何自动执行?保存/更新等时如何在评论中插入article_id?还是我应该将字段添加到Comment类,然后首先保存文章,然后获取article_id,然后获取评论,添加article_id,保存评论并向文章评论集合添加评论?这对我来说毫无意义。

我正在使用带有Spring Boot 2.0.5的Java 10,其中包括spring-data-mongodb和反应驱动程序。我还实现了@CascadeSave批注,用于在保存文章时保存评论。

多谢您的回覆。

java mongodb spring-data spring-data-mongodb spring-boot

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