Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
如何在Hibernate中按字节数组进行搜索?_Hibernate_Jpa - Fatal编程技术网

如何在Hibernate中按字节数组进行搜索?

如何在Hibernate中按字节数组进行搜索?,hibernate,jpa,Hibernate,Jpa,我有一个名为User的实体,它有一个字节数组字段。我想要查询的是获取具有特定sessionId的所有用户 @Entity public class User{ .... @Column(name = "session_id") private byte[] sessionId; } 我创建了一个如下所示的Dao方法,但这是查询二进制数据的正确方法吗?我可以将这个二进制数据转换为UTF8字符串并将其存储为varchar,但我不知道哪种方法更有效 p

我有一个名为User的实体,它有一个字节数组字段。我想要查询的是获取具有特定sessionId的所有用户

@Entity
public class User{
    ....

    @Column(name = "session_id")
    private byte[] sessionId;

}
我创建了一个如下所示的Dao方法,但这是查询二进制数据的正确方法吗?我可以将这个二进制数据转换为UTF8字符串并将其存储为varchar,但我不知道哪种方法更有效

public List<User> getAllUsers(byte[] sessionId){
    EntityManager entityManager = (EntityManager) session.getSession();
    Query query = entityManager.createNativeQuery("SELECT * FROM user WHERE session_id = ?1");
    query.setParameter(1, sessionId);
    ....
}
公共列表getAllUsers(字节[]sessionId){
EntityManager EntityManager=(EntityManager)session.getSession();
Query Query=entityManager.createNativeQuery(“从会话id=1的用户中选择*);
setParameter(1,sessionId);
....
}

有字节[]会话ID的其他用途吗?它不是字符串还是在不同的上下文中用作字节[]?@Smutje我们需要调用一个API方法,它将会话ID作为字节数组。所以我需要将其转换为字节数组,即使我将其作为字符串保存在DB中。我想说,从性能角度来看,保存哪个表示形式并不重要,我会根据可读性或可追溯性以及在不同表示形式之间转换的次数来决定。这里最好的数据类型取决于数据库和为表创建的索引。这与JPA无关。