Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春季冬眠@param将映射到什么_Java_Spring_Hibernate - Fatal编程技术网

Java 春季冬眠@param将映射到什么

Java 春季冬眠@param将映射到什么,java,spring,hibernate,Java,Spring,Hibernate,我将此Pojo作为我的hibernate实体,我正在尝试使用hibernate更新表中的一些行: @Entity public class Money { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", unique = true, updatable = false, nullable = false) private Long id; @Colu

我将此Pojo作为我的hibernate实体,我正在尝试使用hibernate更新表中的一些行:

@Entity
public class Money {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, updatable = false, nullable = false)
    private Long id;

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

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

    @Column(name = "money")
    private double money;

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

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


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

    @Column(name = "created_at")
    @CreationTimestamp
    private Date createdAt;

    @Column(name = "updated_at")
    private Date updated_at;

    public Long getId() {
        return id;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }    

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public Date getUpdated_at() {
        return updated_at;
    }

    public void setUpdated_at(Date updated_at) {
        this.updated_at = updated_at;
    }

}
我想做的是:

@Repository
public interface MoneyRepository extends CrudRepository<Winners, Long> {

    List<Winners> findAll();

    List<Winners> findByUseridAndStatus(String userid, String status);

    @Modifying(clearAutomatically = true)
    @Transactional
    @Query(value = "UPDATE Money w SET w.status = :status WHERE id in :ids")
    int testUpdate(@Param("status") String status, @Param("id") List<Long> ids);
}
@存储库
公共接口MoneyRepository扩展了Crudepository{
列出findAll();
列出FindByUserAndStatus(字符串用户ID、字符串状态);
@修改(clearAutomatically=true)
@交易的
@查询(value=“updatemoney w SET w.status=:status WHERE id in:ids”)
int testUpdate(@Param(“status”)字符串状态,@Param(“id”)列表id);
}
在我的控制器/服务中,我使用它的方式如下:

@Autowired
PayoutRepository payoutRepository;

public int testUpdateDB() {

    List<Long> pendingIds = Arrays.asList(1l, 2l);

    int affected = payoutRepository.testUpdate("pending", pendingIds);

        return affected;
    }
@Autowired
付款人储蓄付款人储蓄;
public int testUpdateDB(){
List pendingIds=Arrays.asList(1l,2l);
int impacted=payotrepository.testUpdate(“待定”,PendingId);
返回受影响;
}
如果我不使用
@Param(“id”)列出它抱怨的id

java.lang.IllegalStateException:对于具有命名参数的查询 需要为方法参数使用提供名称。使用@Param进行查询 方法参数,或者在Java8+上使用javac标志-parameters

如果我使用
@Param(“id”)列出id
它在抱怨:

org.hibernate.QueryException:未设置命名参数[ID]

如果将我的查询更改为
@query(value=“updatemoney w SET w.status=:status WHERE id in:id”)
,而不更改任何其他内容(只是将:id更改为:id),则它可以工作。有人能解释一下映射是如何工作的吗?

@Param(“id”)
告诉他查询中参数的名称

因此,如果您的查询是“updatemoney w SET w.status=:status WHERE id in:ids”

如果我不使用@Param(“id”)列出它抱怨的id
java.lang.IllegalStateException:对于具有命名参数的查询,需要使用提供方法参数的名称。使用@Param作为查询方法参数,或者在Java8+上使用javac标志-parameters。
这是因为你的所有参数都需要有一个@param来告诉他在哪里映射哪些参数

If I use @Param("id") List<Long> ids it's complaining :

org.hibernate.QueryException: Named parameter [ids] not set
如果我使用@Param(“id”)列表id,它会抱怨:
org.hibernate.QueryException:未设置命名参数[ID]
这是因为现在您有一个@param注释,所以它继续,然后在您的查询
@query
中找不到任何名为id
:id
的参数

@Param注释中的名称应映射查询中参数的名称,名称位于

If I use @Param("id") List<Long> ids it's complaining :

org.hibernate.QueryException: Named parameter [ids] not set