要求 ThreeSceneJson的SceneID存在时候 ,Object3DJson 才存在相等的SceneID,Object3DJson的SceneID和Object3DJson的Uuid 作为联合主键。如何实现增删改查
时间: 2024-03-27 12:38:33 浏览: 49
如何实现增删改查
针对这个要求,可以先创建两个实体类,一个是ThreeSceneJson,一个是Object3DJson。
在Object3DJson实体类中,可以定义联合主键:
```java
@Embeddable
public class Object3DJsonPK implements Serializable {
@Column(name = "SceneID")
private String sceneID;
@Column(name = "Uuid")
private String uuid;
// 省略 getter 和 setter 方法
}
```
然后在Object3DJson实体类中使用联合主键:
```java
@Entity
@Table(name = "Object3DJson")
public class Object3DJson {
@EmbeddedId
private Object3DJsonPK id;
@Column(name = "Name")
private String name;
// 省略 getter 和 setter 方法
}
```
在ThreeSceneJson实体类中,可以定义一个一对多的关系:
```java
@Entity
@Table(name = "ThreeSceneJson")
public class ThreeSceneJson {
@Id
@Column(name = "SceneID")
private String sceneID;
@OneToMany(mappedBy = "id.sceneID", cascade = CascadeType.ALL)
private List<Object3DJson> object3DJsonList;
// 省略 getter 和 setter 方法
}
```
这样,当ThreeSceneJson存在时,可以通过关联查询获取到对应的Object3DJson列表,从而实现查询操作。对于增加和修改操作,可以先根据SceneID查询到对应的ThreeSceneJson,然后将新的Object3DJson添加到object3DJsonList中即可。对于删除操作,则可以直接删除对应的Object3DJson对象。
示例代码如下:
```java
@Repository
public class ThreeSceneJsonDaoImpl implements ThreeSceneJsonDao {
@Autowired
private EntityManager entityManager;
@Override
public ThreeSceneJson findBySceneID(String sceneID) {
return entityManager.find(ThreeSceneJson.class, sceneID);
}
@Override
public void saveOrUpdateObject3DJson(Object3DJson object3DJson) {
ThreeSceneJson threeSceneJson = entityManager.find(ThreeSceneJson.class, object3DJson.getId().getSceneID());
List<Object3DJson> object3DJsonList = threeSceneJson.getObject3DJsonList();
if (object3DJsonList == null) {
object3DJsonList = new ArrayList<>();
}
object3DJsonList.add(object3DJson);
threeSceneJson.setObject3DJsonList(object3DJsonList);
entityManager.persist(threeSceneJson);
}
@Override
public void deleteObject3DJson(Object3DJson object3DJson) {
entityManager.remove(entityManager.merge(object3DJson));
}
}
```
需要注意的是,这里的示例代码仅供参考,具体实现还需要根据具体业务逻辑进行调整。
阅读全文