Tag: JPA

kotlin数据类+ bean验证jsr 303

我试图让Kotlin在spring-data-rest项目中使用jsr 303验证。 给定以下数据类声明: @Entity data class User( @Id @GeneratedValue(strategy = javax.persistence.GenerationType.AUTO) var id: Long? = null, @Size(min=5, max=15) val name: String ) @Size注释在这里没有任何作用,使我能够保存用户名称为1个字符。 当执行完全相同的例子,而不是在Kotlin的Java类中时,它工作的很好。 这使我想到一个Kotlin问题。 在此先感谢您的帮助!

如何禁用RepositoryRestHandlerMapping和EndpointHandlerMapping?

我目前正在使用Spring Boot,Hibernate和Spring-HATEOAS构建一个带有REST接口的应用程序。 我的数据模型被定义为具有@Entity批注的bean,我使用Spring的特性来自动设置一个Hibernate仓库(创建一个扩展PagingAndSortingRepository的界面)。 我的应用程序完全是注解驱动的,也就是说,我没有web.xml但是使用@Configuration @Bean , @Configuration @Bean等Spring注解来配置所有的东西,并且在SpringApplication.run(MyApp.class, args);的帮助下从我的main方法启动应用程序SpringApplication.run(MyApp.class, args); 这工作正常,但通过这种方法,创建了一个RepositoryRestHandlerMapping和EndpointHandlerMapping 。 这些创造了一堆我既不需要也不想要的资源。 我实现我自己的控制器,因为他们需要做比标准的逻辑更多。 我怎样才能防止这种默认行为,并禁用这些映射?

Java中的@UniqueConstraint注释

我有一个Java bean。 现在,我想确定这个领域应该是独一无二的。 我正在使用以下代码: @UniqueConstraint(columnNames={"username"}) public String username; 但是我得到一些错误: @UniqueConstraint is dissallowed for this location 什么是使用唯一约束的正确方法? 注意:我正在使用播放框架。

Spring Data JPA + Guice错误:使用@EnableTransactionManagement注解时,没有类型的主要bean定义

我在Play Framework(Java版本)项目中使用Kotlin 1.1.4-3和Guice和Spring Data JPA 2.0.0.RELEASE。 Play Framework版本是2.5.8。 我使用了spring-projects / spring-guice库,特别是将Spring配置类注册为Guice模块的方法 ,将Spring和Guice集成为Play Framework的DI库。 我将一个接口声明为Spring服务的基础。 语法是Kotlin语言。 interface PersonPresenceManagement { fun autoGenerateOrUpdatePersonPresences(companyInfo: CompanyInfo) fun generatePersonPresence(currentUser: SalaryUser, userId: Long, logPeriodId: Long): Result fun saveOrUpdateDailyReport(currentUser: SalaryUser, personPresenceDbId: Long, dailyReport: DailyReport): Result } 正如Spring Data JPA文档中提到的: 改变交易行为的另一种可能性是使用通常覆盖多个存储库的外观或服务实现。 其目的是为非CRUD操作定义事务边界: 我实现了PersonPresenceManagement接口: @Service open class PersonPresenceManagementImpl @Inject constructor(…) : PersonPresenceManagement { @Transactional override […]

在方法上添加@Transactional后,这个类(服务)不能Autowired bean(仓库)?

在MyBootApplication上添加@EnableTransactionManagement @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); } @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); }它打印的TransactionManager是org.springframework.orm.jpa.JpaTransactionManager @Service open class UserService : BaseService() { @Autowired lateinit var repository: UserRepository @Transactional fun updateValid(id: Long, valid: Boolean) { ErrorConstant.ParamErrorCode.IdIsNull.caseThrow { id == 0.toLong() } repository.updateValid(id,valid) […]

重写Kotlin的财产二传导致两个JPA @Id

我有三个代表Hibernate实体的Kotlin类: @MappedSuperclass abstract class Parent { @Id @GeneratedValue @Column(nullable=false) var id: Long? = null } @Entity class Child1 {} @Entity class Child2 { @Id @GeneratedValue @Column(nullable=false) override var id: Long? = null set(value) { super.id = value doSomething() } } 注意我需要重写id的setter以后调用doSomething 。 这是我以前在Java中完成id的方式。 它构建正确,但Hibernate不喜欢它: A foreign key refering Child2 from … has the wrong number […]

在Kotlin中使用JPA双向引用的StackOverflowError

我有以下数据类: @Entity @Table(name = "SECTIONS") data class Section( @Id @GeneratedValue @Column(name = "ID") var id: Long = 0, @Column(name = "NAME") var name: String = "", @OneToMany( mappedBy = "section", fetch = FetchType.EAGER, cascade = arrayOf(CascadeType.ALL), orphanRemoval = true ) var fields: MutableList<Field> = mutableListOf() ) @Entity @Table(name = "FIELDS") data class Field( @Id @GeneratedValue […]

Kotlin使用SpringData Jpa定制存储库

这是我的代码。 我定制了我的存储库。 interface ChapterDao { fun test(novelId:String):List<Chapter> } class ChapterDaoImpl constructor(@PersistenceContext var entityManager: EntityManager){ fun test(novelId: String): List<Chapter> { val query = entityManager.createNativeQuery("select c.name, c.number from chapter c where c.novel.id = $novelId") val resultList = query.resultList as Array<Array<Any>> var chapterList:ArrayList<Chapter> = ArrayList<Chapter>() for (item in resultList){ chapterList.add(Chapter(item.get(0) as String,item.get(1) as Int)) } return chapterList } […]

如何使用Spring Data JPA方法在Kotlin的try-with-resources块中返回Stream?

所以我想使用Kotlin创建一个使用Spring Data JPA项目的Spring Boot ,并让我说我有一个Person实体。 让我们这样说吧: @Entity public class Person { private @GeneratedValue @Id Long id; private String name; @OneToMany private List<Person> friends; … } 我将创建以下接口,以便能够使用Try-with-Resources和Stream<Person> 。 public interface PersonRepository extends Repository<Person, Long> { @Query("select p from Person p") Stream<Person> findAllStream(); } 所以通常在我的服务,我会这样做: @Service class MyService { @Autowired PersonRepository repository; List<String> foo() { try(Stream<Person> stream […]

Kotlin数据类的equals()方法是否可以在没有进一步修改的情况下与JPA结合使用?

Kotlin有一个Data类,包含toString(), equals(), hashCode(), and copy() 。 可以使用equals() and hashCode()直接开箱即用,而无需进一步调整JPA类? 我们通常不得不在下面链接的文章中花费大量时间阅读“自然键”,持久化上下文生命周期等,然后再确信我们做的是正确的事情: 等于和哈希码 在-JPA的哈希码,等于-困境 我们现在可以简单地依靠Kotlin的equals() and hashcode()实现吗?