相关疑难解决方法(0)

显式Hibernate连接表

我有一个M:N relationsship喜欢这里,除了那有一些信息是与相关联的AuthorBook实体.所以我想,我不需要@JoinTable在所有的,应该建立一个class AuthorBook由一个链接到每个AuthorBook和附加信息,对不对?

我试过了

@Entity
public class AuthorBook {
    @Id @ManyToOne Author author;
    @Id @ManyToOne Book book;
    @LobOrWhatever AdditionalInformation additionalInformation;
}
Run Code Online (Sandbox Code Playgroud)

我遇到了问题(我不记得了).所以我介绍了一个@GeneratedId int id并更改了引用@NaturalId.这个作品大多良好,但好笑,它迫使我通过连接AuthorBookSession#byNaturalId这是没有意义的我(我有识别码与实体应取在一起).我也试过了

session.byNaturalId(AuthorBook.class)
     .using("author.id", someAuthorId)
     .using("book.id", someBookId)
     .load();
Run Code Online (Sandbox Code Playgroud)

但这被拒绝告诉我"author.id"不是自然的id(实际上这是真的,因为自然id是"作者",但它的"id"同样有效).

看着网络,我发现每个人都在这样的表中使用id而不是实体,所以我想知道我是不是在尝试一些不可能的东西....(或者是愚蠢的).

java many-to-many hibernate

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

Spring TransactionRequiredException异常

这是我的存储库配置:

@Configuration
public class RepositoryConfing {
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter){
        LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
        entityManagerFactoryBean.setDataSource(dataSource);
        entityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
        entityManagerFactoryBean.setPackagesToScan("com.imdb.model");
        return entityManagerFactoryBean;
    }

    @Bean
    public BasicDataSource dataSource(){
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("org.postgresql.Driver");
        ds.setUrl("jdbc:postgresql://localhost:5432/imdb");
        ds.setUsername("***");
        ds.setPassword("***");
        ds.setInitialSize(5);
        return ds;
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter(){
        HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
        adapter.setDatabase(Database.POSTGRESQL);
        adapter.setShowSql(true);
        adapter.setGenerateDdl(false);
        adapter.setDatabasePlatform("org.hibernate.dialect.PostgreSQLDialect");
        return adapter;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用merge方法时,我得到一个例外:javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'merge' call

可能是我RepositoryConfig缺少一些额外的配置? …

java spring transactions exception spring-data-jpa

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