gpt4 book ai didi

java - 将 java BitSet 保存到数据库

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:45 24 4
gpt4 key购买 nike

使用 JPA,我当然希望能够将 BitSet 保存到数据库并拉回。

假设我有:

@Entity
@Table(name = "myTable")
public class MyClass {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Object_Id")
protected long id;

@Column(name = "Tags")
protected BitSet tags;

... getters & setters etc...
}

我是否也应该定义一个“columnDefinition”?我真的不明白它是如何持久化的(使用 toString()?),而且它是如何从数据库中加载回来的。

你能帮我解决这个问题吗?

谢谢!

最佳答案

更有效的方法(使用 int 而不是 byte[])需要一个非常简单的自定义类:

@Entity
@Access(AccessType.FIELD)
public class SampleEntity {

@Transient
private IntBitSet isolationLevel = new IntBitSet(0);

public static final int USER_BIT = 0;
public static final int DEVICE_BIT = 1;
// 2, 3, 4, ...

public boolean isUserIsolated() {
return isolationLevel.bitGet(USER_BIT);
}

public boolean isDeviceIsolated() {
return isolationLevel.bitGet(DEVICE_BIT);
}

public void setUserIsolated(boolean b) {
isolationLevel.bitSet(USER_BIT, b);
}

public void setDeviceIsolated(boolean b) {
isolationLevel.bitSet(DEVICE_BIT, b);
}

@Access(AccessType.PROPERTY)
@Column
public int getIsolationLevel() {
return isolationLevel.getValue();
}

public void setIsolationLevel(int isolationLevel) {
this.isolationLevel = new IntBitSet(isolationLevel);
}

private static class IntBitSet {
private int value;

public IntBitSet(int value) {
this.value = value;
}

public int getValue() {
return value;
}

public boolean bitGet(int i) {
return ((value >> i) & 1) == 1;
}

public void bitSet(int i, boolean b) {
if (b) {
bitSet(i);
} else {
bitUnset(i);
}
}
private void bitSet(int i) {
value = value | (1 << i);
}
private void bitUnset(int i) {
value = value & ~(1 << i);
}
}
}

关于java - 将 java BitSet 保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390068/

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