POJO/モデル クラスに注釈を付けずに jersey/resteasy を使用して Web サービスを作成する方法を探しています。jooqを使用してモデルクラスを生成すると、データベースに変更が加えられるたびにモデル クラスが生成されます。
私の問題に関連する 2 つのトピックを見つけました: hereとhere ですが、別の lib/implementation を使用する以外の解決策があるかどうか知りたいです。
任意のヒント?技術?考え?
どうもありがとうございます!
編集:いくつかのコードを追加します。私は「マッシュルーム」と呼ばれるモデル クラスを持っています。これは、mushroom_id、title、description の 3 つのフィールドで構成されています。
次のような JSON 表現が必要です。
{
mushroom: {
mushroom_id: 12,
title: "pied de mouton",
description: "très bon champignon!"
}
}
そのために、Resteasy では、次の注釈を付けたマッシュルーム クラスが必要です。
@XmlRootElement(name = "mushroom")
public class Mushroom {
private Integer mushroomId;
private String title;
private String description
// for each field I need a getter
// with the XmlElement annotations.
// for 'description' for instance:
@XmlElement
public String getDescription() {
return description;
}
}
しかし、テーブル Mushroom で jooq によって生成された Mushroom クラス/エンティティは次のようになります。
@javax.annotation.Generated(value = { "http://www.jooq.org", "3.2.0" },
comments = "This class is generated by jOOQ")
@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Mushrooms extends org.jooq.impl.TableImpl<com.spanier.db.tables.records.MushroomsRecord> {
private static final long serialVersionUID = -539518621;
/**
* The singleton instance of <code>public.mushrooms</code>
*/
public static final com.spanier.db.tables.Mushrooms MUSHROOMS = new com.spanier.db.tables.Mushrooms();
/**
* The class holding records for this type
*/
@Override
public java.lang.Class<com.spanier.db.tables.records.MushroomsRecord> getRecordType() {
return com.spanier.db.tables.records.MushroomsRecord.class;
}
/**
* The column <code>public.mushrooms.mushrooms_id</code>.
*/
public final org.jooq.TableField<com.spanier.db.tables.records.MushroomsRecord, java.lang.Integer> MUSHROOMS_ID = createField("mushrooms_id", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this);
/**
* The column <code>public.mushrooms.name</code>.
*/
public final org.jooq.TableField<com.spanier.db.tables.records.MushroomsRecord, java.lang.String> NAME = createField("name", org.jooq.impl.SQLDataType.CHAR.length(50).nullable(false), this);
/**
* The column <code>public.mushrooms.description</code>.
*/
public final org.jooq.TableField<com.spanier.db.tables.records.MushroomsRecord, java.lang.String> DESCRIPTION = createField("description", org.jooq.impl.SQLDataType.VARCHAR, this);
/**
* Create a <code>public.mushrooms</code> table reference
*/
public Mushrooms() {
super("mushrooms", com.spanier.db.Public.PUBLIC);
}
/**
* Create an aliased <code>public.mushrooms</code> table reference
*/
public Mushrooms(java.lang.String alias) {
super(alias, com.spanier.db.Public.PUBLIC, com.spanier.db.tables.Mushrooms.MUSHROOMS);
}
/**
* {@inheritDoc}
*/
@Override
public org.jooq.Identity<com.spanier.db.tables.records.MushroomsRecord, java.lang.Integer> getIdentity() {
return com.spanier.db.Keys.IDENTITY_MUSHROOMS;
}
/**
* {@inheritDoc}
*/
@Override
public org.jooq.UniqueKey<com.spanier.db.tables.records.MushroomsRecord> getPrimaryKey() {
return com.spanier.db.Keys.MUSHROOMS_PKEY;
}
/**
* {@inheritDoc}
*/
@Override
public java.util.List<org.jooq.UniqueKey<com.spanier.db.tables.records.MushroomsRecord>> getKeys() {
return java.util.Arrays.<org.jooq.UniqueKey<com.spanier.db.tables.records.MushroomsRecord>>asList(com.spanier.db.Keys.MUSHROOMS_PKEY);
}
/**
* {@inheritDoc}
*/
@Override
public com.spanier.db.tables.Mushrooms as(java.lang.String alias) {
return new com.spanier.db.tables.Mushrooms(alias);
}
}
ご覧のように、jooq によって生成されたクラスは次のとおりです。きのこテーブル 注釈 (json 表現の注釈) を失い、jooq クラスを再度編集する必要があります。
そのため、マッシュルームで生成されたクラスの Resteasy アノテーション (json 表現) を別のクラス/別のファイルに追加する方法を探しています。