相关疑难解决方法(0)

Java Hibernate和SQL Server中UUID的不同表示

我正在尝试UUID使用Hibernate将POJO中的列映射到SQL Server表列.

注释应用如下:

@Id
@GeneratedValue
@Column(name = "Id", columnDefinition = "uniqueidentifier") 
public UUID getId(){ ... }
Run Code Online (Sandbox Code Playgroud)

但是,似乎Java Hibernate映射和SQL服务器之间存在一些字节序问题.

例如,在我的Java应用程序中,我将id表示为:

4375CF8E-DEF5-43F6-92F3-074D34A4CE35
ADE3DAF8-A62B-4CE2-9D8C-B4E4A54E3DA1
Run Code Online (Sandbox Code Playgroud)

而在SQL Server中,这些表示为:

8ECF7543-F5DE-F643-92F3-074D34A4CE35
F8DAE3AD-2BA6-E24C-9D8C-B4E4A54E3DA1
Run Code Online (Sandbox Code Playgroud)

有没有办法在双方都有相同的代表?

请注意,uniqueidentifier它仅用于uniqueidentifier在SQL Server中具有类型ID而不是类型binary; 当存在同样的问题uniqueidentifier,从注释移除(可观察到该问题通过转换binaryuniqueidentifier).

java sql-server hibernate

14
推荐指数
3
解决办法
6625
查看次数

UUID疯狂与mssql

我的数据库条目具有值的UUID(使用Microsoft SQL Server Management Studio提取)

CDF86F27-AFF4-2E47-BABB - 2F46B079E98B

将其加载到我的Scala应用程序后,toString方法会生成此值

276ff8cd-f4af-472e降低-BABB - 2f46b079e98b

这是怎么发生的?当我手边只有裸字符串CDF86F27-AFF4-2E47-BABB-2F46B079E98B时,如何以编程方式创建UUID实例?

相关的Slick代码(前者:表定义,后者:数据库访问对象)

class ChannelTable(tag: Tag) extends Table[ChannelTuple](tag, "Channel") {
  def id = column[UUID]("Id", O.PrimaryKey)
  def channelId = column[Int]("Channel_Id", O.NotNull)
  def timer = column[UUID]("Timer_Id", O.NotNull)
  def from = column[Timestamp]("FromTime", O.NotNull)
  def to = column[Timestamp]("ToTime", O.NotNull)
  def mon = column[Boolean]("Mon", O.NotNull)
  def tues = column[Boolean]("Tues", O.NotNull)
  def wed = column[Boolean]("Wed", O.NotNull)
  def thu = column[Boolean]("Thu", O.NotNull)
  def fri = column[Boolean]("Fri", O.NotNull)
  def sat = column[Boolean]("Sat", O.NotNull) …
Run Code Online (Sandbox Code Playgroud)

sql-server uuid scala

8
推荐指数
1
解决办法
3739
查看次数

编程语言中的字节序

嗯,"Endianness"主题对我来说总是有点混乱,但我从来没有遇到任何问题,这些问题要求我甚至考虑我使用的二进制编写器/阅读器的默认行为.我正在c#中写一个PNG解码器.PNG文件格式规范声明所有数字都以大端符号存储(我觉得非常自然).但是,当我注意到.NET的BinaryReader/Writer使用一点endian符号时,我感到非常惊讶.令我更加困惑的是,事实上,java的二进制IO与大端符号一起工作(不是java程序员,所以也许我错了).所以我开始考虑以下问题:

1 - 为什么它们是这样的?我的意思是基类库的默认行为.2 - 为什么在使用.NET的System.IO时无法选择首选符号?

我目前正在使用Jon Skeet的 MiscUtil,它就像一个魅力(感谢,man =)).但是在基类库中看到这个功能会很酷.

.net c# java endianness

6
推荐指数
1
解决办法
2279
查看次数

Java 中的 Base64 指南

我使用以下代码将 C# 中的 Guid 转换为 Base64:

var id = Guid.Parse("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
var base64=Convert.ToBase64String(id.ToByteArray());
Run Code Online (Sandbox Code Playgroud)

输出

thufvo5cfUCFo9XvMfIbTQ==

当我尝试使用以下命令在 Java 中执行相同操作时:

java.util.Base64.Encoder encoder=Base64.getEncoder();
UUID uuid = UUID.fromString("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
encoder.encodeToString(bb.array());
Run Code Online (Sandbox Code Playgroud)

输出不同

vp8btlyOQH2Fo9XvMfIbTQ==

我的 Java 代码做错了什么?如何才能获得与使用 C# 相同的结果?

java uuid base64

5
推荐指数
1
解决办法
1683
查看次数

.NET Native GUID转换

我有一个外部数据库,正在向我提供信息.一个将其数据保存为本机GUID格式,而我的其他数据源提供标准.NET GUID格式字符串.

有没有一种整洁的方式从Native GUID转换为GUID结构

还有任何验证位来确定提供的值是否为Native GUID?如果有的话我似乎找不到任何东西.

区别如下:

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data4[8];
} GUID;
Run Code Online (Sandbox Code Playgroud)

Data1,Data2和Data3的字节顺序相反,但Data4保持不变,请参阅http://en.wikipedia.org/wiki/Globally_unique_identifier了解更多信息

.net vb.net guid datamapper

4
推荐指数
2
解决办法
4446
查看次数

标签 统计

java ×3

.net ×2

sql-server ×2

uuid ×2

base64 ×1

c# ×1

datamapper ×1

endianness ×1

guid ×1

hibernate ×1

scala ×1

vb.net ×1