java - 如何在@Query注解中检索对象成员

标签 java spring hibernate jpa

我有一个基本实体,我想创建一个查询来检索该实体的成员。这是实体:

public class TestEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String author;

    @Column(insertable=false)
    private String db_id;
}

以及我尝试在其中创建查询的测试存储库。

@Repository
@Transactional
public interface TestRepository extends JpaRepository<TestEntity, Long> {
    @Query("INSERT INTO TestEntity VALUES (:object.id, :object.name :object.author)")
    void insertSynchronizedColumns(TestEntity object);
}

当前会引发错误:

antlr.MismatchedTokenException: expecting OPEN, found 'VALUES'

作为函数参数,我需要对象,而不是特定的列名称。有没有办法检索 objectid 和其他字段?

最佳答案

您可以通过 nativeQuery 执行此操作,如下所示:

 @Modifying
 @Transactional
 @Query("INSERT INTO TestEntity VALUES (:#{#object.id}, :#{#object.name}, :#{#object.author})",nativeQuery=true)
 int insertSynchronizedColumns(@Param("object")TestEntity object);

关于java - 如何在@Query注解中检索对象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909568/

相关文章:

java - 如何从客户端检测网络断开(JAVA)

java - 如何在我的应用程序中启动 Android 应用程序? (提供示例)

java - 将 JavaUtilDate 转换为 NSDate,反之亦然?

java - Spring 配置: component-scan

java - 有没有类似 Spring TestExecutionListener for TestSuite 的东西?

java - 我可以使用 Hibernate 的 Criteria 在 from 子句中生成子查询吗?

Java-旋转矩形以进行碰撞

用于评估 OS 的 Spring 表达式

mysql - Hibernate 在 MySQL 上发出太多查询

java - Hibernate 的 Activity 记录模式