小编Nei*_*ton的帖子

如何在Hibernate中使用@Where

搜索了几个小时,但我陷入了PlayAramework与JPA的学习曲线.我正在建立一个可以发布帖子的示例网站.但这些帖子可以具有以下状态:

  • PostDraft(帖子是草稿,不发布)
  • PostPublished(帖子可以发表)

这些状态存储在单独的表中.显然,国家职位草案尚不可见.

所以我有这些课程:

  • 页面类(从表中获取页面信息,1页可以有多个帖子)
  • 帖子类(帖子可以在草稿中发布)

在我的页面课程中,我有:

@Column(name="POSTS_REF")
@Where(clause="PostPublished")
private List<Posts> userPosts;
Run Code Online (Sandbox Code Playgroud)

但这不起作用!那么,我如何指定where子句,只加载处于已发布状态的帖子而不使用JPQL?

谢谢!

更新时间:2011-10-11

表:具有列的帖子: - id - title - state_ref(对States表的ID的引用) - 内容

表:美国与列: - ID - Statename的

所以我想说的是:

select * 
from posts inner join states on posts.state_ref = states.id
where states.statename = 'PostPublished'
Run Code Online (Sandbox Code Playgroud)

更新2011-10-13

这是我目前的修改,在我的页面类中:但它也不起作用.

/** link to the states */
@JoinColumn(name = "STATES_REF")
@OneToOne
@Where(clause = "states.statename = 'PostPublished'")
public MyState state;
Run Code Online (Sandbox Code Playgroud)

更新2012-02-13 Emt的回答毕竟对我有用.

hibernate jpa playframework

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

Spring Expected ':' instead of 't' error when returning List?

I've got a simple RequestMapping method that returns a list of Users, the Users model has a ONE TO MANY relation to HolidayDates...I'm just playing around with it, so I've chosen holiday dates as the relation (list of dates they went on a holiday).

So ONE user can have MANY related Dates.

User model:

@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="userId")
    private int userId;

    @Column(name="about")
    private String about;

    // Maybe change to fetchtype eager
    @OneToMany(fetch …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson

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

如何使用cascade ="all,delete-orphan"制作hibernate集合的副本

我试图像这样制作一个hibernate实体A的副本:

A a = (A) session.get(A.class, id);
session.evict(a);
a.setId(null);
session.save(a);
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,我获得以下期望:

org.hibernate.HibernateException: Don't change the reference to a collection with cascade="all-delete-orphan": com.test.A.B
Run Code Online (Sandbox Code Playgroud)

因为我有一个在实体A中定义的B实体的集合,所以可以安全地假设发生此错误:

<list name="B"  table="B" lazy="false" cascade="all,delete-orphan">
    <key column="A_ID" not-null="true"/>
    <index column="X"/>            
    <one-to-many class="com.test.B"/>
</list>
Run Code Online (Sandbox Code Playgroud)

怎么可能制作一个实体A的副本,包括它的实体B的集合,而没有hibernate对它不满意?

java hibernate

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

如何将Spring Boot @RepositoryRestResource映射到特定URL?

我似乎无法在以下任何位置映射我的存储库:

@RepositoryRestResource(collectionResourceRel = "item", path = "item")
public interface ItemRepository extends PagingAndSortingRepository<Item, Long> {
Run Code Online (Sandbox Code Playgroud)

我以为我可以用:

 path = "/some/other/path/item"
Run Code Online (Sandbox Code Playgroud)

但映射无法解决.我明白了:

HTTP ERROR 404

Problem accessing /some/other/path/item. Reason:

Not Found
Run Code Online (Sandbox Code Playgroud)

在spring-data中,javadoc path定义为:"用于导出此资源的路径段."

我究竟做错了什么?

java configuration spring spring-data spring-boot

12
推荐指数
4
解决办法
9471
查看次数

如何处理Spring Data JPA中的一系列ID批量删除?

现在我有一个类User,我arrayjsp或获得了一个请求数据html.

列出这个 Integer[] arr=[5,6,9,10,62,52,21]

然后我使用两种方法来完成膨胀删除操作.

@Transactional
@Override
public void deleteUser(Integer id) {

    oneRepository.delete(id);
}


@Transactional
@Override
public void deleteSomeUser(Integer[] ids) {

    for (Integer id : ids) {

        deleteUser(id);

    }

}
Run Code Online (Sandbox Code Playgroud)

我想知道如果这是一种更有效的方法来完成这个动作.

你可以看到我的日志:它似乎不太好!

[94, 95, 91, 92, 93]
Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?


Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    delete 
    from
        sshh_user 
    where
        ID=?



Hibernate: 
    select
        count(practice0_.ID) as col_0_0_ 
    from
        sshh_user …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-mvc spring-data spring-data-jpa

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

Spring JPA:Save()方法应该将数据提交到数据库吗?

我使用Spring data了我的项目,我使用的是标准的Repositoryextends CRUD Repository.

我的代码按预期工作,但是当我调用repository.save()数据库时没有改变?

我是否还需要commit在此之后调用一个以便更改数据库?或者该repository.save()方法是否应自动更改数据库?

java spring repository spring-data spring-data-jpa

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

如何判断我是否在Spring中处理事务?

我在Spring服务中存在持久性问题.休息控制器R接收请求,并通过一些代码层以复杂的方式调用服务S. S中的服务方法声明一个事务; 这应该是第一次启动交易.但是服务的行为就像之前已经启动的事务一样,并且我的一些数据对象将成为会话的一部分(他们不能这样做).如何确定交易是否已处于活动状态?我试图注入EntityManager和/或JpaTransactionManager; 但两者似乎没有任何帮助.

如何检查我是否在交易中?

在我寻找可能的嫌疑人的所有这些层次之前,我想确定这一点.

java spring transactions spring-data-jpa

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

Spring数据休息排序带有下划线的字段

我们@RepositoryRestResourcePagingAndSortingRepository连接到postgres数据库的顶部使用了一个非常简单的设置.我们还配置spring.jackson.property-naming-strategy=SNAKE_CASE了返回漂亮的json.在我们开始排序之前,这一切都很好,很花哨.正如我们所发现的 - 排序要求我们提供实际的类字段名称(我们当然在驼峰的情况下):

get("/thing?sort=dateCreated,desc")

当我们尝试javascript友好

get("/thing?sort=date_created,desc")

它失败了,因为jpa试图用下划线拆分参数.

是否有一种简单的方法让路径params与我们在json中返回的格式相同?

java json spring-data spring-data-jpa spring-data-rest

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

应用程序上下文中某些bean的依赖关系形成一个循环

我正在使用JPA开发Spring Boot v1.4.2.RELEASE应用程序.

我定义了存储库接口和实现

ARepository

@Repository
public interface ARepository extends CrudRepository<A, String>, ARepositoryCustom, JpaSpecificationExecutor<A> {
}
Run Code Online (Sandbox Code Playgroud)

ARepositoryCustom

@Repository
public interface ARepositoryCustom {
    Page<A> findA(findAForm form, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

ARepositoryImpl

@Repository
public class ARepositoryImpl implements ARepositoryCustom {
    @Autowired
    private ARepository aRepository;
    @Override
    public Page<A> findA(findAForm form, Pageable pageable) {
        return aRepository.findAll(
                where(ASpecs.codeLike(form.getCode()))
                .and(ASpecs.labelLike(form.getLabel()))
                .and(ASpecs.isActive()),
                pageable);
    }
}
Run Code Online (Sandbox Code Playgroud)

和服务 AServiceImpl

@Service
public class AServiceImpl implements AService {
    private ARepository aRepository;
    public AServiceImpl(ARepository aRepository) {
        super();
        this.aRepository = aRepository;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序不会以消息开头: …

java spring spring-data-jpa spring-boot

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

如何使用JPA Query将数据插入db?

我的预备语句有问题,但我无法弄清楚错误的位置.我试图将URI链接插入数据库.

 @Repository
 public interface LoggerDao extends CrudRepository<Logger, Long> {
 @Query("select t from Logger t where t.user.id=?#{principal.id}")
 List<Logger> findAll();

@Modifying
@Query(value = "insert into Logger t (t.redirect, t.user.id) VALUES (:insertLink,?#{principal.id})", nativeQuery = true)
@Transactional
void logURI(@Param("insertLink") String insertLink);
Run Code Online (Sandbox Code Playgroud)

错误

    2017-03-11 19:52:59.157  WARN 65154 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 42001, SQLState: 42001
2017-03-11 19:52:59.157 ERROR 65154 --- [nio-8080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper   : Syntax error in SQL statement "INSERT INTO LOGGER T[*] (T.REDIRECT, T.USER.ID) VALUES (?,?) "; expected "., (, DIRECT, SORTED, DEFAULT, VALUES, …
Run Code Online (Sandbox Code Playgroud)

java sql spring-data-jpa spring-boot

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