gpt4 book ai didi

Spring Boot JPA findByUuid

转载 作者:行者123 更新时间:2023-12-01 09:46:08 25 4
gpt4 key购买 nike

我想在数据库中查询不是主键的给定 UUID。我无法让它工作:

这是我的 Node 类。我的 PK 是一个长自动增量,我有一个名为 uuid 的字段,用于存储在数据库中保存新节点时生成的 UUID key 。

更新:即使我通过 id 获得一个节点,然后我使用它的节点 uuid 来调用 findByUuid 函数,我也得到了一个空值

    Node n = nodeService.getNodeByNodeId(1L);
return nodeService.getNodeByNodeUuid(n.getApiKey());

节点
@Entity
@Table(name="node")
public class Node {

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "node_seq")
@SequenceGenerator(name = "node_seq", sequenceName = "node_seq", allocationSize = 1)
private Long id;

@Column(name = "uuid", updatable = false, nullable = false, unique=true)
private UUID uuid;


public UUID getUuid() {
return uuid;
}

public void setUuid(UUID uuid) {
this.uuid = uuid;
}

@Column(name = "NAME", length = 50, unique = true)
@NotNull
private String name;

@OneToMany(mappedBy="node", cascade=CascadeType.ALL)
private List<User> users;

public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

Controller
    @PreAuthorize("hasRole('MANAGER')")
@RequestMapping(value="/node/{nodeUuidString}", method = RequestMethod.GET)
public Node getNodeByUuid(@PathVariable UUID nodeUuidString) {
return nodeService.getNodeByNodeUuid(nodeUuidString);
}

我还将 nodeUuidString 作为字符串获取,然后使用以下命令转换为 UUID:
UUID nodeUuid = UUID.fromString(nodeUuidString);

但它没有奏效。

服务
    public Node getNodeByNodeUuid(UUID nodeUuid) {
return nodeRepository.findOneByUuid(nodeUuid);
}

存储库
@Repository
public interface NodeRepository extends CrudRepository<Node, Long> {

Node findOneByUuid(UUID nodeUuid);

}

最佳答案

Spring 将数据库中的字段创建为 binary(255)

正确的是二进制(16)

因此,为了使查询正常工作,我必须在实体定义上使用此注释:
@Column(name = "apiKey", updatable = false, nullable = false, unique=true, columnDefinition = "BINARY(16)")

关于Spring Boot JPA findByUuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48459648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com